<!doctype html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
.node:hover path,
.node.current path,
.node:active polygon,
.node:hover polygon,
.node.current polygon {
  stroke: fuchsia;
  stroke-width: 2;
}

.edge:active path,
.edge:hover path,
.edge.current path,
.edge:active ellipse,
.edge:hover ellipse,
.edge.current ellipse {
  stroke: url(#edgeGradient);
  stroke-width: 3;
  stroke-opacity: 1;
}

.edge:active polygon,
.edge:hover polygon,
.edge.current polygon {
  stroke: fuchsia;
  stroke-width: 3;
  fill: fuchsia;
  stroke-opacity: 1;
  fill-opacity: 1;
}

.edge:active text,
.edge:hover text {
  fill: fuchsia;
}

.cluster path {
  stroke-width: 3;
}

.cluster:active path,
.cluster:hover path {
  fill: #ffff0011;
}

div.hint {
  background-color: #000000aa;
  color: white;
  font-family: Arial, Helvetica, sans-serif;
  border-radius: 1rem;
  position: fixed;
  top: calc(50% - 4em);
  right: calc(50% - 10em);
  border: none;
  padding: 1em 3em 1em 1em;
}

.hint button {
  position: absolute;
  font-weight: bolder;
  right: 0.6em;
  top: 0.6em;
  color: inherit;
  background-color: inherit;
  border: 1px solid currentColor;
  border-radius: 1em;
  margin-left: 0.6em;
}

.hint a {
  color: inherit;
}

#button_help {
  color: white;
  background-color: #00000011;
  border-radius: 1em;
  position: fixed;
  top: 1em;
  right: 1em;
  font-size: 24pt;
  font-weight: bolder;
  width: 2em;
  height: 2em;
  border: none;
}

#button_help:hover {
  cursor: pointer;
  background-color: #00000077;
}

@media print {
  #button_help {
    display: none;
  }

  div.hint {
    display: none;
  }
}

    </style>
  </head>
  <body>
    <button id="button_help">?</button>
    <div id="hints" class="hint" style="display: none">
      <button id="close-hints">x</button>
      <span id="hint-text"></span>
      <ul>
        <li><b>Hover</b> - highlight</li>
        <li><b>Right-click</b> - pin highlight</li>
        <li><b>ESC</b> - clear</li>
      </ul>
    </div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.0.4 (20251115.1723)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1911pt" height="3334pt"
 viewBox="0.00 0.00 1911.00 3334.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 3330)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-3330 1907,-3330 1907,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_bin</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-414C20,-414 126.25,-414 126.25,-414 132.25,-414 138.25,-420 138.25,-426 138.25,-426 138.25,-544 138.25,-544 138.25,-550 132.25,-556 126.25,-556 126.25,-556 20,-556 20,-556 14,-556 8,-550 8,-544 8,-544 8,-426 8,-426 8,-420 14,-414 20,-414"/>
<text xml:space="preserve" text-anchor="middle" x="73.12" y="-543.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">bin</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_src</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M158.25,-8C158.25,-8 1883,-8 1883,-8 1889,-8 1895,-14 1895,-20 1895,-20 1895,-3306 1895,-3306 1895,-3312 1889,-3318 1883,-3318 1883,-3318 158.25,-3318 158.25,-3318 152.25,-3318 146.25,-3312 146.25,-3306 146.25,-3306 146.25,-20 146.25,-20 146.25,-14 152.25,-8 158.25,-8"/>
<text xml:space="preserve" text-anchor="middle" x="1020.62" y="-3305.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">src</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_src/cache</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M992.88,-1776C992.88,-1776 1528.5,-1776 1528.5,-1776 1534.5,-1776 1540.5,-1782 1540.5,-1788 1540.5,-1788 1540.5,-1860 1540.5,-1860 1540.5,-1866 1534.5,-1872 1528.5,-1872 1528.5,-1872 992.88,-1872 992.88,-1872 986.88,-1872 980.88,-1866 980.88,-1860 980.88,-1860 980.88,-1788 980.88,-1788 980.88,-1782 986.88,-1776 992.88,-1776"/>
<text xml:space="preserve" text-anchor="middle" x="1260.69" y="-1859.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">cache</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_src/cli</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M166.25,-16C166.25,-16 1045.88,-16 1045.88,-16 1051.88,-16 1057.88,-22 1057.88,-28 1057.88,-28 1057.88,-574 1057.88,-574 1057.88,-580 1051.88,-586 1045.88,-586 1045.88,-586 166.25,-586 166.25,-586 160.25,-586 154.25,-580 154.25,-574 154.25,-574 154.25,-28 154.25,-28 154.25,-22 160.25,-16 166.25,-16"/>
<text xml:space="preserve" text-anchor="middle" x="606.06" y="-573.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">cli</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_src/cli/init&#45;config</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M405.25,-50C405.25,-50 934.38,-50 934.38,-50 940.38,-50 946.38,-56 946.38,-62 946.38,-62 946.38,-280 946.38,-280 946.38,-286 940.38,-292 934.38,-292 934.38,-292 405.25,-292 405.25,-292 399.25,-292 393.25,-286 393.25,-280 393.25,-280 393.25,-62 393.25,-62 393.25,-56 399.25,-50 405.25,-50"/>
<text xml:space="preserve" text-anchor="middle" x="669.81" y="-279.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">init&#45;config</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_src/cli/listeners</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M391.75,-302C391.75,-302 778.12,-302 778.12,-302 784.12,-302 790.12,-308 790.12,-314 790.12,-314 790.12,-432 790.12,-432 790.12,-438 784.12,-444 778.12,-444 778.12,-444 391.75,-444 391.75,-444 385.75,-444 379.75,-438 379.75,-432 379.75,-432 379.75,-314 379.75,-314 379.75,-308 385.75,-302 391.75,-302"/>
<text xml:space="preserve" text-anchor="middle" x="584.94" y="-431.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">listeners</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_src/cli/listeners/performance&#45;log</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M405.25,-310C405.25,-310 770.12,-310 770.12,-310 776.12,-310 782.12,-316 782.12,-322 782.12,-322 782.12,-350 782.12,-350 782.12,-356 776.12,-362 770.12,-362 770.12,-362 405.25,-362 405.25,-362 399.25,-362 393.25,-356 393.25,-350 393.25,-350 393.25,-322 393.25,-322 393.25,-316 399.25,-310 405.25,-310"/>
<text xml:space="preserve" text-anchor="middle" x="587.69" y="-349.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">performance&#45;log</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_src/cli/tools</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M194.38,-508C194.38,-508 300.62,-508 300.62,-508 306.62,-508 312.62,-514 312.62,-520 312.62,-520 312.62,-548 312.62,-548 312.62,-554 306.62,-560 300.62,-560 300.62,-560 194.38,-560 194.38,-560 188.38,-560 182.38,-554 182.38,-548 182.38,-548 182.38,-520 182.38,-520 182.38,-514 188.38,-508 194.38,-508"/>
<text xml:space="preserve" text-anchor="middle" x="247.5" y="-547.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">tools</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_src/cli/utl</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M375.62,-452C375.62,-452 481.88,-452 481.88,-452 487.88,-452 493.88,-458 493.88,-464 493.88,-464 493.88,-522 493.88,-522 493.88,-528 487.88,-534 481.88,-534 481.88,-534 375.62,-534 375.62,-534 369.62,-534 363.62,-528 363.62,-522 363.62,-522 363.62,-464 363.62,-464 363.62,-458 369.62,-452 375.62,-452"/>
<text xml:space="preserve" text-anchor="middle" x="428.75" y="-521.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_src/config&#45;utl</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M352.75,-618C352.75,-618 777.75,-618 777.75,-618 783.75,-618 789.75,-624 789.75,-630 789.75,-630 789.75,-778 789.75,-778 789.75,-784 783.75,-790 777.75,-790 777.75,-790 352.75,-790 352.75,-790 346.75,-790 340.75,-784 340.75,-778 340.75,-778 340.75,-630 340.75,-630 340.75,-624 346.75,-618 352.75,-618"/>
<text xml:space="preserve" text-anchor="middle" x="565.25" y="-777.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">config&#45;utl</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_src/config&#45;utl/extract&#45;depcruise&#45;config</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M571.12,-626C571.12,-626 769.75,-626 769.75,-626 775.75,-626 781.75,-632 781.75,-638 781.75,-638 781.75,-696 781.75,-696 781.75,-702 775.75,-708 769.75,-708 769.75,-708 571.12,-708 571.12,-708 565.12,-708 559.12,-702 559.12,-696 559.12,-696 559.12,-638 559.12,-638 559.12,-632 565.12,-626 571.12,-626"/>
<text xml:space="preserve" text-anchor="middle" x="670.44" y="-695.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">extract&#45;depcruise&#45;config</text>
</g>
<g id="clust12" class="cluster">
<title>cluster_src/enrich</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M856.25,-2568C856.25,-2568 1377.38,-2568 1377.38,-2568 1383.38,-2568 1389.38,-2574 1389.38,-2580 1389.38,-2580 1389.38,-3008 1389.38,-3008 1389.38,-3014 1383.38,-3020 1377.38,-3020 1377.38,-3020 856.25,-3020 856.25,-3020 850.25,-3020 844.25,-3014 844.25,-3008 844.25,-3008 844.25,-2580 844.25,-2580 844.25,-2574 850.25,-2568 856.25,-2568"/>
<text xml:space="preserve" text-anchor="middle" x="1116.81" y="-3007.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">enrich</text>
</g>
<g id="clust13" class="cluster">
<title>cluster_src/enrich/derive</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1118.25,-2822C1118.25,-2822 1356.25,-2822 1356.25,-2822 1362.25,-2822 1368.25,-2828 1368.25,-2834 1368.25,-2834 1368.25,-2982 1368.25,-2982 1368.25,-2988 1362.25,-2994 1356.25,-2994 1356.25,-2994 1118.25,-2994 1118.25,-2994 1112.25,-2994 1106.25,-2988 1106.25,-2982 1106.25,-2982 1106.25,-2834 1106.25,-2834 1106.25,-2828 1112.25,-2822 1118.25,-2822"/>
<text xml:space="preserve" text-anchor="middle" x="1237.25" y="-2981.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">derive</text>
</g>
<g id="clust14" class="cluster">
<title>cluster_src/enrich/summarize</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M994,-2576C994,-2576 1369.38,-2576 1369.38,-2576 1375.38,-2576 1381.38,-2582 1381.38,-2588 1381.38,-2588 1381.38,-2736 1381.38,-2736 1381.38,-2742 1375.38,-2748 1369.38,-2748 1369.38,-2748 994,-2748 994,-2748 988,-2748 982,-2742 982,-2736 982,-2736 982,-2588 982,-2588 982,-2582 988,-2576 994,-2576"/>
<text xml:space="preserve" text-anchor="middle" x="1181.69" y="-2735.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">summarize</text>
</g>
<g id="clust15" class="cluster">
<title>cluster_src/extract</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M704.75,-808C704.75,-808 1723.75,-808 1723.75,-808 1729.75,-808 1735.75,-814 1735.75,-820 1735.75,-820 1735.75,-1592 1735.75,-1592 1735.75,-1598 1729.75,-1604 1723.75,-1604 1723.75,-1604 704.75,-1604 704.75,-1604 698.75,-1604 692.75,-1598 692.75,-1592 692.75,-1592 692.75,-820 692.75,-820 692.75,-814 698.75,-808 704.75,-808"/>
<text xml:space="preserve" text-anchor="middle" x="1214.25" y="-1591.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">extract</text>
</g>
<g id="clust16" class="cluster">
<title>cluster_src/extract/acorn</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M991.75,-1058C991.75,-1058 1542.75,-1058 1542.75,-1058 1548.75,-1058 1554.75,-1064 1554.75,-1070 1554.75,-1070 1554.75,-1186 1554.75,-1186 1554.75,-1192 1548.75,-1198 1542.75,-1198 1542.75,-1198 991.75,-1198 991.75,-1198 985.75,-1198 979.75,-1192 979.75,-1186 979.75,-1186 979.75,-1070 979.75,-1070 979.75,-1064 985.75,-1058 991.75,-1058"/>
<text xml:space="preserve" text-anchor="middle" x="1267.25" y="-1185.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">acorn</text>
</g>
<g id="clust17" class="cluster">
<title>cluster_src/extract/resolve</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M994,-864C994,-864 1550.25,-864 1550.25,-864 1556.25,-864 1562.25,-870 1562.25,-876 1562.25,-876 1562.25,-1038 1562.25,-1038 1562.25,-1044 1556.25,-1050 1550.25,-1050 1550.25,-1050 994,-1050 994,-1050 988,-1050 982,-1044 982,-1038 982,-1038 982,-876 982,-876 982,-870 988,-864 994,-864"/>
<text xml:space="preserve" text-anchor="middle" x="1272.12" y="-1037.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">resolve</text>
</g>
<g id="clust18" class="cluster">
<title>cluster_src/extract/swc</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1296.5,-1226C1296.5,-1226 1715.75,-1226 1715.75,-1226 1721.75,-1226 1727.75,-1232 1727.75,-1238 1727.75,-1238 1727.75,-1296 1727.75,-1296 1727.75,-1302 1721.75,-1308 1715.75,-1308 1715.75,-1308 1296.5,-1308 1296.5,-1308 1290.5,-1308 1284.5,-1302 1284.5,-1296 1284.5,-1296 1284.5,-1238 1284.5,-1238 1284.5,-1232 1290.5,-1226 1296.5,-1226"/>
<text xml:space="preserve" text-anchor="middle" x="1506.12" y="-1295.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">swc</text>
</g>
<g id="clust19" class="cluster">
<title>cluster_src/extract/transpile</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1298.75,-1316C1298.75,-1316 1713.12,-1316 1713.12,-1316 1719.12,-1316 1725.12,-1322 1725.12,-1328 1725.12,-1328 1725.12,-1566 1725.12,-1566 1725.12,-1572 1719.12,-1578 1713.12,-1578 1713.12,-1578 1298.75,-1578 1298.75,-1578 1292.75,-1578 1286.75,-1572 1286.75,-1566 1286.75,-1566 1286.75,-1328 1286.75,-1328 1286.75,-1322 1292.75,-1316 1298.75,-1316"/>
<text xml:space="preserve" text-anchor="middle" x="1505.94" y="-1565.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">transpile</text>
</g>
<g id="clust20" class="cluster">
<title>cluster_src/extract/tsc</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M991.75,-1212C991.75,-1212 1213.25,-1212 1213.25,-1212 1219.25,-1212 1225.25,-1218 1225.25,-1224 1225.25,-1224 1225.25,-1312 1225.25,-1312 1225.25,-1318 1219.25,-1324 1213.25,-1324 1213.25,-1324 991.75,-1324 991.75,-1324 985.75,-1324 979.75,-1318 979.75,-1312 979.75,-1312 979.75,-1224 979.75,-1224 979.75,-1218 985.75,-1212 991.75,-1212"/>
<text xml:space="preserve" text-anchor="middle" x="1102.5" y="-1311.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">tsc</text>
</g>
<g id="clust21" class="cluster">
<title>cluster_src/graph&#45;utl</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1265.38,-2338C1265.38,-2338 1723.62,-2338 1723.62,-2338 1729.62,-2338 1735.62,-2344 1735.62,-2350 1735.62,-2350 1735.62,-2498 1735.62,-2498 1735.62,-2504 1729.62,-2510 1723.62,-2510 1723.62,-2510 1265.38,-2510 1265.38,-2510 1259.38,-2510 1253.38,-2504 1253.38,-2498 1253.38,-2498 1253.38,-2350 1253.38,-2350 1253.38,-2344 1259.38,-2338 1265.38,-2338"/>
<text xml:space="preserve" text-anchor="middle" x="1494.5" y="-2497.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">graph&#45;utl</text>
</g>
<g id="clust22" class="cluster">
<title>cluster_src/main</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M405.25,-2260C405.25,-2260 1053.88,-2260 1053.88,-2260 1059.88,-2260 1065.88,-2266 1065.88,-2272 1065.88,-2272 1065.88,-2548 1065.88,-2548 1065.88,-2554 1059.88,-2560 1053.88,-2560 1053.88,-2560 405.25,-2560 405.25,-2560 399.25,-2560 393.25,-2554 393.25,-2548 393.25,-2548 393.25,-2272 393.25,-2272 393.25,-2266 399.25,-2260 405.25,-2260"/>
<text xml:space="preserve" text-anchor="middle" x="729.56" y="-2547.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">main</text>
</g>
<g id="clust23" class="cluster">
<title>cluster_src/main/files&#45;and&#45;dirs</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M695.75,-2442C695.75,-2442 760.75,-2442 760.75,-2442 766.75,-2442 772.75,-2448 772.75,-2454 772.75,-2454 772.75,-2482 772.75,-2482 772.75,-2488 766.75,-2494 760.75,-2494 760.75,-2494 695.75,-2494 695.75,-2494 689.75,-2494 683.75,-2488 683.75,-2482 683.75,-2482 683.75,-2454 683.75,-2454 683.75,-2448 689.75,-2442 695.75,-2442"/>
<text xml:space="preserve" text-anchor="middle" x="728.25" y="-2481.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">files&#45;and&#45;dirs</text>
</g>
<g id="clust24" class="cluster">
<title>cluster_src/main/options</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M839.38,-2346C839.38,-2346 1045.88,-2346 1045.88,-2346 1051.88,-2346 1057.88,-2352 1057.88,-2358 1057.88,-2358 1057.88,-2416 1057.88,-2416 1057.88,-2422 1051.88,-2428 1045.88,-2428 1045.88,-2428 839.38,-2428 839.38,-2428 833.38,-2428 827.38,-2422 827.38,-2416 827.38,-2416 827.38,-2358 827.38,-2358 827.38,-2352 833.38,-2346 839.38,-2346"/>
<text xml:space="preserve" text-anchor="middle" x="942.62" y="-2415.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">options</text>
</g>
<g id="clust25" class="cluster">
<title>cluster_src/main/resolve&#45;options</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M695.75,-2268C695.75,-2268 760.75,-2268 760.75,-2268 766.75,-2268 772.75,-2274 772.75,-2280 772.75,-2280 772.75,-2308 772.75,-2308 772.75,-2314 766.75,-2320 760.75,-2320 760.75,-2320 695.75,-2320 695.75,-2320 689.75,-2320 683.75,-2314 683.75,-2308 683.75,-2308 683.75,-2280 683.75,-2280 683.75,-2274 689.75,-2268 695.75,-2268"/>
<text xml:space="preserve" text-anchor="middle" x="728.25" y="-2307.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">resolve&#45;options</text>
</g>
<g id="clust26" class="cluster">
<title>cluster_src/main/rule&#45;set</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M687.88,-2328C687.88,-2328 768.62,-2328 768.62,-2328 774.62,-2328 780.62,-2334 780.62,-2340 780.62,-2340 780.62,-2398 780.62,-2398 780.62,-2404 774.62,-2410 768.62,-2410 768.62,-2410 687.88,-2410 687.88,-2410 681.88,-2410 675.88,-2404 675.88,-2398 675.88,-2398 675.88,-2340 675.88,-2340 675.88,-2334 681.88,-2328 687.88,-2328"/>
<text xml:space="preserve" text-anchor="middle" x="728.25" y="-2397.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">rule&#45;set</text>
</g>
<g id="clust27" class="cluster">
<title>cluster_src/report</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M983.88,-1890C983.88,-1890 1345.25,-1890 1345.25,-1890 1351.25,-1890 1357.25,-1896 1357.25,-1902 1357.25,-1902 1357.25,-2230 1357.25,-2230 1357.25,-2236 1351.25,-2242 1345.25,-2242 1345.25,-2242 983.88,-2242 983.88,-2242 977.88,-2242 971.88,-2236 971.88,-2230 971.88,-2230 971.88,-1902 971.88,-1902 971.88,-1896 977.88,-1890 983.88,-1890"/>
<text xml:space="preserve" text-anchor="middle" x="1164.56" y="-2229.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">report</text>
</g>
<g id="clust28" class="cluster">
<title>cluster_src/schema</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M810.12,-2032C810.12,-2032 949.38,-2032 949.38,-2032 955.38,-2032 961.38,-2038 961.38,-2044 961.38,-2044 961.38,-2240 961.38,-2240 961.38,-2246 955.38,-2252 949.38,-2252 949.38,-2252 810.12,-2252 810.12,-2252 804.12,-2252 798.12,-2246 798.12,-2240 798.12,-2240 798.12,-2044 798.12,-2044 798.12,-2038 804.12,-2032 810.12,-2032"/>
<text xml:space="preserve" text-anchor="middle" x="879.75" y="-2239.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">schema</text>
</g>
<g id="clust29" class="cluster">
<title>cluster_src/utl</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1618.5,-1646C1618.5,-1646 1875,-1646 1875,-1646 1881,-1646 1887,-1652 1887,-1658 1887,-1658 1887,-1896 1887,-1896 1887,-1902 1881,-1908 1875,-1908 1875,-1908 1618.5,-1908 1618.5,-1908 1612.5,-1908 1606.5,-1902 1606.5,-1896 1606.5,-1896 1606.5,-1658 1606.5,-1658 1606.5,-1652 1612.5,-1646 1618.5,-1646"/>
<text xml:space="preserve" text-anchor="middle" x="1746.75" y="-1895.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">utl</text>
</g>
<g id="clust30" class="cluster">
<title>cluster_src/validate</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1131.38,-3096C1131.38,-3096 1695.5,-3096 1695.5,-3096 1701.5,-3096 1707.5,-3102 1707.5,-3108 1707.5,-3108 1707.5,-3256 1707.5,-3256 1707.5,-3262 1701.5,-3268 1695.5,-3268 1695.5,-3268 1131.38,-3268 1131.38,-3268 1125.38,-3268 1119.38,-3262 1119.38,-3256 1119.38,-3256 1119.38,-3108 1119.38,-3108 1119.38,-3102 1125.38,-3096 1131.38,-3096"/>
<text xml:space="preserve" text-anchor="middle" x="1413.44" y="-3255.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">validate</text>
</g>
<!-- bin/depcruise&#45;baseline.mjs -->
<g id="node1" class="node">
<title>bin/depcruise&#45;baseline.mjs</title>
<g id="a_node1"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/bin/depcruise-baseline.mjs" xlink:title="depcruise&#45;baseline.mjs">
<path fill="#ffffcc" stroke="black" d="M122.83,-469.88C122.83,-469.88 23.42,-469.88 23.42,-469.88 20.46,-469.88 17.5,-466.92 17.5,-463.96 17.5,-463.96 17.5,-458.04 17.5,-458.04 17.5,-455.08 20.46,-452.12 23.42,-452.12 23.42,-452.12 122.83,-452.12 122.83,-452.12 125.79,-452.12 128.75,-455.08 128.75,-458.04 128.75,-458.04 128.75,-463.96 128.75,-463.96 128.75,-466.92 125.79,-469.88 122.83,-469.88"/>
<text xml:space="preserve" text-anchor="start" x="25.5" y="-457.32" font-family="Helvetica,sans-Serif" font-size="9.00">depcruise&#45;baseline.mjs</text>
</a>
</g>
</g>
<!-- src/cli/assert&#45;node&#45;environment&#45;suitable.mjs -->
<g id="node2" class="node">
<title>src/cli/assert&#45;node&#45;environment&#45;suitable.mjs</title>
<g id="a_node2"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/assert-node-environment-suitable.mjs" xlink:title="not&#45;reachable&#45;from&#45;folder&#45;index">
<path fill="#ccccff" stroke="blue" d="M326.83,-469.88C326.83,-469.88 168.17,-469.88 168.17,-469.88 165.21,-469.88 162.25,-466.92 162.25,-463.96 162.25,-463.96 162.25,-458.04 162.25,-458.04 162.25,-455.08 165.21,-452.12 168.17,-452.12 168.17,-452.12 326.83,-452.12 326.83,-452.12 329.79,-452.12 332.75,-455.08 332.75,-458.04 332.75,-458.04 332.75,-463.96 332.75,-463.96 332.75,-466.92 329.79,-469.88 326.83,-469.88"/>
<text xml:space="preserve" text-anchor="start" x="170.25" y="-457.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">assert&#45;node&#45;environment&#45;suitable.mjs</text>
</a>
</g>
</g>
<!-- bin/depcruise&#45;baseline.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs -->
<g id="edge1" class="edge">
<title>bin/depcruise&#45;baseline.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M128.78,-458.04C128.78,-458.04 152.84,-458.04 152.84,-458.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="152.84,-460.14 158.84,-458.04 152.84,-455.94 152.84,-460.14"/>
</g>
<!-- src/cli/index.mjs -->
<g id="node3" class="node">
<title>src/cli/index.mjs</title>
<g id="a_node3"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/index.mjs" xlink:title="index.mjs">
<path fill="#ccccff" stroke="black" d="M269.08,-499.88C269.08,-499.88 225.92,-499.88 225.92,-499.88 222.96,-499.88 220,-496.92 220,-493.96 220,-493.96 220,-488.04 220,-488.04 220,-485.08 222.96,-482.12 225.92,-482.12 225.92,-482.12 269.08,-482.12 269.08,-482.12 272.04,-482.12 275,-485.08 275,-488.04 275,-488.04 275,-493.96 275,-493.96 275,-496.92 272.04,-499.88 269.08,-499.88"/>
<text xml:space="preserve" text-anchor="start" x="228" y="-487.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- bin/depcruise&#45;baseline.mjs&#45;&gt;src/cli/index.mjs -->
<g id="edge2" class="edge">
<title>bin/depcruise&#45;baseline.mjs&#45;&gt;src/cli/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M129.18,-463.96C136.21,-463.96 141,-463.96 141,-463.96 141,-463.96 141,-486.07 141,-486.07 141,-486.07 210.49,-486.07 210.49,-486.07"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="210.49,-488.17 216.49,-486.07 210.49,-483.97 210.49,-488.17"/>
</g>
<!-- src/cli/format&#45;meta&#45;info.mjs -->
<g id="node19" class="node">
<title>src/cli/format&#45;meta&#45;info.mjs</title>
<g id="a_node19"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/format-meta-info.mjs" xlink:title="format&#45;meta&#45;info.mjs">
<path fill="#ccccff" stroke="black" d="M472.46,-41.88C472.46,-41.88 385.04,-41.88 385.04,-41.88 382.08,-41.88 379.12,-38.92 379.12,-35.96 379.12,-35.96 379.12,-30.04 379.12,-30.04 379.12,-27.08 382.08,-24.12 385.04,-24.12 385.04,-24.12 472.46,-24.12 472.46,-24.12 475.42,-24.12 478.38,-27.08 478.38,-30.04 478.38,-30.04 478.38,-35.96 478.38,-35.96 478.38,-38.92 475.42,-41.88 472.46,-41.88"/>
<text xml:space="preserve" text-anchor="start" x="387.12" y="-29.32" font-family="Helvetica,sans-Serif" font-size="9.00">format&#45;meta&#45;info.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/format&#45;meta&#45;info.mjs -->
<g id="edge23" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/format&#45;meta&#45;info.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M247,-481.64C247,-477.64 247,-473.88 247,-473.88 247,-473.88 383,-473.88 383,-473.88 383,-473.88 383,-51.24 383,-51.24"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="385.1,-51.24 383,-45.24 380.9,-51.24 385.1,-51.24"/>
</g>
<!-- src/cli/normalize&#45;cli&#45;options.mjs -->
<g id="node21" class="node">
<title>src/cli/normalize&#45;cli&#45;options.mjs</title>
<g id="a_node21"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/normalize-cli-options.mjs" xlink:title="normalize&#45;cli&#45;options.mjs">
<path fill="#ccccff" stroke="black" d="M481.83,-559.88C481.83,-559.88 375.67,-559.88 375.67,-559.88 372.71,-559.88 369.75,-556.92 369.75,-553.96 369.75,-553.96 369.75,-548.04 369.75,-548.04 369.75,-545.08 372.71,-542.12 375.67,-542.12 375.67,-542.12 481.83,-542.12 481.83,-542.12 484.79,-542.12 487.75,-545.08 487.75,-548.04 487.75,-548.04 487.75,-553.96 487.75,-553.96 487.75,-556.92 484.79,-559.88 481.83,-559.88"/>
<text xml:space="preserve" text-anchor="start" x="377.75" y="-547.33" font-family="Helvetica,sans-Serif" font-size="9.00">normalize&#45;cli&#45;options.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/normalize&#45;cli&#45;options.mjs -->
<g id="edge28" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/normalize&#45;cli&#45;options.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.18,-495.98C296.73,-495.98 323,-495.98 323,-495.98 323,-495.98 323,-553.96 323,-553.96 323,-553.96 360.36,-553.96 360.36,-553.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="360.36,-556.06 366.36,-553.96 360.36,-551.86 360.36,-556.06"/>
</g>
<!-- src/cli/utl/assert&#45;file&#45;existence.mjs -->
<g id="node22" class="node">
<title>src/cli/utl/assert&#45;file&#45;existence.mjs</title>
<g id="a_node22"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/utl/assert-file-existence.mjs" xlink:title="assert&#45;file&#45;existence.mjs">
<path fill="#ccccff" stroke="black" d="M479.96,-507.88C479.96,-507.88 377.54,-507.88 377.54,-507.88 374.58,-507.88 371.62,-504.92 371.62,-501.96 371.62,-501.96 371.62,-496.04 371.62,-496.04 371.62,-493.08 374.58,-490.12 377.54,-490.12 377.54,-490.12 479.96,-490.12 479.96,-490.12 482.92,-490.12 485.88,-493.08 485.88,-496.04 485.88,-496.04 485.88,-501.96 485.88,-501.96 485.88,-504.92 482.92,-507.88 479.96,-507.88"/>
<text xml:space="preserve" text-anchor="start" x="379.62" y="-495.32" font-family="Helvetica,sans-Serif" font-size="9.00">assert&#45;file&#45;existence.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/utl/assert&#45;file&#45;existence.mjs -->
<g id="edge29" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/utl/assert&#45;file&#45;existence.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.42,-494.02C275.42,-494.02 362.13,-494.02 362.13,-494.02"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="362.13,-496.13 368.13,-494.03 362.13,-491.93 362.13,-496.13"/>
</g>
<!-- src/cli/utl/io.mjs -->
<g id="node23" class="node">
<title>src/cli/utl/io.mjs</title>
<g id="a_node23"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/utl/io.mjs" xlink:title="io.mjs">
<path fill="#ccccff" stroke="black" d="M449.83,-477.88C449.83,-477.88 407.67,-477.88 407.67,-477.88 404.71,-477.88 401.75,-474.92 401.75,-471.96 401.75,-471.96 401.75,-466.04 401.75,-466.04 401.75,-463.08 404.71,-460.12 407.67,-460.12 407.67,-460.12 449.83,-460.12 449.83,-460.12 452.79,-460.12 455.75,-463.08 455.75,-466.04 455.75,-466.04 455.75,-471.96 455.75,-471.96 455.75,-474.92 452.79,-477.88 449.83,-477.88"/>
<text xml:space="preserve" text-anchor="start" x="416.75" y="-465.32" font-family="Helvetica,sans-Serif" font-size="9.00">io.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/utl/io.mjs -->
<g id="edge30" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/utl/io.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.46,-488.12C326.37,-488.12 429,-488.12 429,-488.12 429,-488.12 429,-487.12 429,-487.12"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="431.1,-487.14 429,-481.14 426.9,-487.14 431.1,-487.14"/>
</g>
<!-- src/cli/init&#45;config/index.mjs -->
<g id="node25" class="node">
<title>src/cli/init&#45;config/index.mjs</title>
<g id="a_node25"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/index.mjs" xlink:title="index.mjs">
<path fill="#ccccff" stroke="black" d="M450.33,-207.88C450.33,-207.88 407.17,-207.88 407.17,-207.88 404.21,-207.88 401.25,-204.92 401.25,-201.96 401.25,-201.96 401.25,-196.04 401.25,-196.04 401.25,-193.08 404.21,-190.12 407.17,-190.12 407.17,-190.12 450.33,-190.12 450.33,-190.12 453.29,-190.12 456.25,-193.08 456.25,-196.04 456.25,-196.04 456.25,-201.96 456.25,-201.96 456.25,-204.92 453.29,-207.88 450.33,-207.88"/>
<text xml:space="preserve" text-anchor="start" x="409.25" y="-195.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/init&#45;config/index.mjs -->
<g id="edge24" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/init&#45;config/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M219.62,-484.1C191.43,-484.1 152,-484.1 152,-484.1 152,-484.1 152,-199 152,-199 152,-199 391.92,-199 391.92,-199"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="391.92,-201.1 397.92,-199 391.92,-196.9 391.92,-201.1"/>
</g>
<!-- src/cli/listeners/cli&#45;feedback.mjs -->
<g id="node26" class="node">
<title>src/cli/listeners/cli&#45;feedback.mjs</title>
<g id="a_node26"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/listeners/cli-feedback.mjs" xlink:title="cli&#45;feedback.mjs">
<path fill="#ccccff" stroke="black" d="M463.83,-417.88C463.83,-417.88 393.67,-417.88 393.67,-417.88 390.71,-417.88 387.75,-414.92 387.75,-411.96 387.75,-411.96 387.75,-406.04 387.75,-406.04 387.75,-403.08 390.71,-400.12 393.67,-400.12 393.67,-400.12 463.83,-400.12 463.83,-400.12 466.79,-400.12 469.75,-403.08 469.75,-406.04 469.75,-406.04 469.75,-411.96 469.75,-411.96 469.75,-414.92 466.79,-417.88 463.83,-417.88"/>
<text xml:space="preserve" text-anchor="start" x="395.75" y="-405.32" font-family="Helvetica,sans-Serif" font-size="9.00">cli&#45;feedback.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/listeners/cli&#45;feedback.mjs -->
<g id="edge25" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/listeners/cli&#45;feedback.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.24,-486.12C317.97,-486.12 395,-486.12 395,-486.12 395,-486.12 395,-427.18 395,-427.18"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="397.1,-427.18 395,-421.18 392.9,-427.18 397.1,-427.18"/>
</g>
<!-- src/cli/listeners/ndjson.mjs -->
<g id="node27" class="node">
<title>src/cli/listeners/ndjson.mjs</title>
<g id="a_node27"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/listeners/ndjson.mjs" xlink:title="ndjson.mjs">
<path fill="#ccccff" stroke="black" d="M452.96,-387.88C452.96,-387.88 404.54,-387.88 404.54,-387.88 401.58,-387.88 398.62,-384.92 398.62,-381.96 398.62,-381.96 398.62,-376.04 398.62,-376.04 398.62,-373.08 401.58,-370.12 404.54,-370.12 404.54,-370.12 452.96,-370.12 452.96,-370.12 455.92,-370.12 458.88,-373.08 458.88,-376.04 458.88,-376.04 458.88,-381.96 458.88,-381.96 458.88,-384.92 455.92,-387.88 452.96,-387.88"/>
<text xml:space="preserve" text-anchor="start" x="406.62" y="-375.32" font-family="Helvetica,sans-Serif" font-size="9.00">ndjson.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/listeners/ndjson.mjs -->
<g id="edge26" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/listeners/ndjson.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.44,-484.12C304.25,-484.12 345,-484.12 345,-484.12 345,-484.12 345,-379 345,-379 345,-379 389.49,-379 389.49,-379"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="389.49,-381.1 395.49,-379 389.49,-376.9 389.49,-381.1"/>
</g>
<!-- src/cli/listeners/performance&#45;log/index.mjs -->
<g id="node28" class="node">
<title>src/cli/listeners/performance&#45;log/index.mjs</title>
<g id="a_node28"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/listeners/performance-log/index.mjs" xlink:title="index.mjs">
<path fill="#ccccff" stroke="black" d="M450.33,-335.88C450.33,-335.88 407.17,-335.88 407.17,-335.88 404.21,-335.88 401.25,-332.92 401.25,-329.96 401.25,-329.96 401.25,-324.04 401.25,-324.04 401.25,-321.08 404.21,-318.12 407.17,-318.12 407.17,-318.12 450.33,-318.12 450.33,-318.12 453.29,-318.12 456.25,-321.08 456.25,-324.04 456.25,-324.04 456.25,-329.96 456.25,-329.96 456.25,-332.92 453.29,-335.88 450.33,-335.88"/>
<text xml:space="preserve" text-anchor="start" x="409.25" y="-323.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/cli/listeners/performance&#45;log/index.mjs -->
<g id="edge27" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/cli/listeners/performance&#45;log/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M275.33,-492.07C301.6,-492.07 337,-492.07 337,-492.07 337,-492.07 337,-327 337,-327 337,-327 392.19,-327 392.19,-327"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="392.19,-329.1 398.19,-327 392.19,-324.9 392.19,-329.1"/>
</g>
<!-- src/config&#45;utl/extract&#45;babel&#45;config.mjs -->
<g id="node29" class="node">
<title>src/config&#45;utl/extract&#45;babel&#45;config.mjs</title>
<g id="a_node29"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-babel-config.mjs" xlink:title="extract&#45;babel&#45;config.mjs">
<path fill="#99ffff" stroke="black" d="M479.58,-763.88C479.58,-763.88 377.92,-763.88 377.92,-763.88 374.96,-763.88 372,-760.92 372,-757.96 372,-757.96 372,-752.04 372,-752.04 372,-749.08 374.96,-746.12 377.92,-746.12 377.92,-746.12 479.58,-746.12 479.58,-746.12 482.54,-746.12 485.5,-749.08 485.5,-752.04 485.5,-752.04 485.5,-757.96 485.5,-757.96 485.5,-760.92 482.54,-763.88 479.58,-763.88"/>
<text xml:space="preserve" text-anchor="start" x="380" y="-751.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;babel&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;babel&#45;config.mjs -->
<g id="edge31" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;babel&#45;config.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M219.68,-495.93C201.46,-495.93 181,-495.93 181,-495.93 181,-495.93 181,-755 181,-755 181,-755 362.57,-755 362.57,-755"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="362.57,-757.1 368.57,-755 362.57,-752.9 362.57,-757.1"/>
</g>
<!-- src/config&#45;utl/extract&#45;known&#45;violations.mjs -->
<g id="node30" class="node">
<title>src/config&#45;utl/extract&#45;known&#45;violations.mjs</title>
<g id="a_node30"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-known-violations.mjs" xlink:title="extract&#45;known&#45;violations.mjs">
<path fill="#99ffff" stroke="black" d="M488.58,-673.88C488.58,-673.88 368.92,-673.88 368.92,-673.88 365.96,-673.88 363,-670.92 363,-667.96 363,-667.96 363,-662.04 363,-662.04 363,-659.08 365.96,-656.12 368.92,-656.12 368.92,-656.12 488.58,-656.12 488.58,-656.12 491.54,-656.12 494.5,-659.08 494.5,-662.04 494.5,-662.04 494.5,-667.96 494.5,-667.96 494.5,-670.92 491.54,-673.88 488.58,-673.88"/>
<text xml:space="preserve" text-anchor="start" x="371" y="-661.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;known&#45;violations.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;known&#45;violations.mjs -->
<g id="edge32" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;known&#45;violations.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M275.32,-497.93C293.54,-497.93 314,-497.93 314,-497.93 314,-497.93 314,-665 314,-665 314,-665 353.64,-665 353.64,-665"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="353.64,-667.1 359.64,-665 353.64,-662.9 353.64,-667.1"/>
</g>
<!-- src/config&#45;utl/extract&#45;ts&#45;config.mjs -->
<g id="node31" class="node">
<title>src/config&#45;utl/extract&#45;ts&#45;config.mjs</title>
<g id="a_node31"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-ts-config.mjs" xlink:title="extract&#45;ts&#45;config.mjs">
<path fill="#99ffff" stroke="black" d="M471.33,-733.88C471.33,-733.88 386.17,-733.88 386.17,-733.88 383.21,-733.88 380.25,-730.92 380.25,-727.96 380.25,-727.96 380.25,-722.04 380.25,-722.04 380.25,-719.08 383.21,-716.12 386.17,-716.12 386.17,-716.12 471.33,-716.12 471.33,-716.12 474.29,-716.12 477.25,-719.08 477.25,-722.04 477.25,-722.04 477.25,-727.96 477.25,-727.96 477.25,-730.92 474.29,-733.88 471.33,-733.88"/>
<text xml:space="preserve" text-anchor="start" x="388.25" y="-721.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;ts&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;ts&#45;config.mjs -->
<g id="edge33" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;ts&#45;config.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M219.63,-497.9C203.36,-497.9 186,-497.9 186,-497.9 186,-497.9 186,-725 186,-725 186,-725 370.89,-725 370.89,-725"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="370.89,-727.1 376.89,-725 370.89,-722.9 370.89,-727.1"/>
</g>
<!-- src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs -->
<g id="node32" class="node">
<title>src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs</title>
<g id="a_node32"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-webpack-resolve-config.mjs" xlink:title="extract&#45;webpack&#45;resolve&#45;config.mjs">
<path fill="#99ffff" stroke="black" d="M502.83,-703.88C502.83,-703.88 354.67,-703.88 354.67,-703.88 351.71,-703.88 348.75,-700.92 348.75,-697.96 348.75,-697.96 348.75,-692.04 348.75,-692.04 348.75,-689.08 351.71,-686.12 354.67,-686.12 354.67,-686.12 502.83,-686.12 502.83,-686.12 505.79,-686.12 508.75,-689.08 508.75,-692.04 508.75,-692.04 508.75,-697.96 508.75,-697.96 508.75,-700.92 505.79,-703.88 502.83,-703.88"/>
<text xml:space="preserve" text-anchor="start" x="356.75" y="-691.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;webpack&#45;resolve&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs -->
<g id="edge34" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M247,-500.36C247,-502.35 247,-503.88 247,-503.88 247,-503.88 355,-503.88 355,-503.88 355,-503.88 355,-676.75 355,-676.75"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="352.9,-676.75 355,-682.75 357.1,-676.75 352.9,-676.75"/>
</g>
<!-- src/main/cruise.mjs -->
<g id="node33" class="node">
<title>src/main/cruise.mjs</title>
<g id="a_node33"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/cruise.mjs" xlink:title="cruise.mjs">
<path fill="#ffcccc" stroke="black" d="M617.33,-2405.88C617.33,-2405.88 571.92,-2405.88 571.92,-2405.88 568.96,-2405.88 566,-2402.92 566,-2399.96 566,-2399.96 566,-2394.04 566,-2394.04 566,-2391.08 568.96,-2388.12 571.92,-2388.12 571.92,-2388.12 617.33,-2388.12 617.33,-2388.12 620.29,-2388.12 623.25,-2391.08 623.25,-2394.04 623.25,-2394.04 623.25,-2399.96 623.25,-2399.96 623.25,-2402.92 620.29,-2405.88 617.33,-2405.88"/>
<text xml:space="preserve" text-anchor="start" x="574" y="-2393.32" font-family="Helvetica,sans-Serif" font-size="9.00">cruise.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/main/cruise.mjs -->
<g id="edge35" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/main/cruise.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M219.82,-491.99C198.27,-491.99 172,-491.99 172,-491.99 172,-491.99 172,-2399.96 172,-2399.96 172,-2399.96 556.55,-2399.96 556.55,-2399.96"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="556.55,-2402.06 562.55,-2399.96 556.55,-2397.86 556.55,-2402.06"/>
</g>
<!-- src/utl/object&#45;util.mjs -->
<g id="node34" class="node">
<title>src/utl/object&#45;util.mjs</title>
<g id="a_node34"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/object-util.mjs" xlink:title="object&#45;util.mjs">
<path fill="#cccccc" stroke="black" d="M1694.71,-1821.88C1694.71,-1821.88 1634.29,-1821.88 1634.29,-1821.88 1631.33,-1821.88 1628.38,-1818.92 1628.38,-1815.96 1628.38,-1815.96 1628.38,-1810.04 1628.38,-1810.04 1628.38,-1807.08 1631.33,-1804.12 1634.29,-1804.12 1634.29,-1804.12 1694.71,-1804.12 1694.71,-1804.12 1697.67,-1804.12 1700.62,-1807.08 1700.62,-1810.04 1700.62,-1810.04 1700.62,-1815.96 1700.62,-1815.96 1700.62,-1818.92 1697.67,-1821.88 1694.71,-1821.88"/>
<text xml:space="preserve" text-anchor="start" x="1636.38" y="-1809.33" font-family="Helvetica,sans-Serif" font-size="9.00">object&#45;util.mjs</text>
</a>
</g>
</g>
<!-- src/cli/index.mjs&#45;&gt;src/utl/object&#45;util.mjs -->
<g id="edge36" class="edge">
<title>src/cli/index.mjs&#45;&gt;src/utl/object&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M219.65,-493.96C199.58,-493.96 176,-493.96 176,-493.96 176,-493.96 176,-1440.04 176,-1440.04 176,-1440.04 1591,-1440.04 1591,-1440.04 1591,-1440.04 1591,-1806.62 1591,-1806.62 1591,-1806.62 1619.15,-1806.62 1619.15,-1806.62"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.15,-1808.73 1625.15,-1806.63 1619.15,-1804.53 1619.15,-1808.73"/>
</g>
<!-- bin/depcruise&#45;fmt.mjs -->
<g id="node4" class="node">
<title>bin/depcruise&#45;fmt.mjs</title>
<g id="a_node4"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/bin/depcruise-fmt.mjs" xlink:title="depcruise&#45;fmt.mjs">
<path fill="#ffffcc" stroke="black" d="M111.21,-439.88C111.21,-439.88 35.04,-439.88 35.04,-439.88 32.08,-439.88 29.12,-436.92 29.12,-433.96 29.12,-433.96 29.12,-428.04 29.12,-428.04 29.12,-425.08 32.08,-422.12 35.04,-422.12 35.04,-422.12 111.21,-422.12 111.21,-422.12 114.17,-422.12 117.12,-425.08 117.12,-428.04 117.12,-428.04 117.12,-433.96 117.12,-433.96 117.12,-436.92 114.17,-439.88 111.21,-439.88"/>
<text xml:space="preserve" text-anchor="start" x="37.12" y="-427.32" font-family="Helvetica,sans-Serif" font-size="9.00">depcruise&#45;fmt.mjs</text>
</a>
</g>
</g>
<!-- bin/depcruise&#45;fmt.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs -->
<g id="edge3" class="edge">
<title>bin/depcruise&#45;fmt.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M117.31,-433.96C150.41,-433.96 190,-433.96 190,-433.96 190,-433.96 190,-442.82 190,-442.82"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="187.9,-442.82 190,-448.82 192.1,-442.82 187.9,-442.82"/>
</g>
<!-- src/cli/format.mjs -->
<g id="node5" class="node">
<title>src/cli/format.mjs</title>
<g id="a_node5"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/format.mjs" xlink:title="not&#45;reachable&#45;from&#45;folder&#45;index">
<path fill="#ccccff" stroke="blue" d="M270.58,-439.88C270.58,-439.88 224.42,-439.88 224.42,-439.88 221.46,-439.88 218.5,-436.92 218.5,-433.96 218.5,-433.96 218.5,-428.04 218.5,-428.04 218.5,-425.08 221.46,-422.12 224.42,-422.12 224.42,-422.12 270.58,-422.12 270.58,-422.12 273.54,-422.12 276.5,-425.08 276.5,-428.04 276.5,-428.04 276.5,-433.96 276.5,-433.96 276.5,-436.92 273.54,-439.88 270.58,-439.88"/>
<text xml:space="preserve" text-anchor="start" x="226.5" y="-427.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">format.mjs</text>
</a>
</g>
</g>
<!-- bin/depcruise&#45;fmt.mjs&#45;&gt;src/cli/format.mjs -->
<g id="edge4" class="edge">
<title>bin/depcruise&#45;fmt.mjs&#45;&gt;src/cli/format.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M117.58,-428.04C117.58,-428.04 209.16,-428.04 209.16,-428.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="209.16,-430.14 215.16,-428.04 209.16,-425.94 209.16,-430.14"/>
</g>
<!-- src/cli/format.mjs&#45;&gt;src/cli/normalize&#45;cli&#45;options.mjs -->
<g id="edge19" class="edge">
<title>src/cli/format.mjs&#45;&gt;src/cli/normalize&#45;cli&#45;options.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M276.83,-436.32C304.25,-436.32 341,-436.32 341,-436.32 341,-436.32 341,-548.04 341,-548.04 341,-548.04 360.71,-548.04 360.71,-548.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="360.71,-550.14 366.71,-548.04 360.71,-545.94 360.71,-550.14"/>
</g>
<!-- src/cli/format.mjs&#45;&gt;src/cli/utl/assert&#45;file&#45;existence.mjs -->
<g id="edge20" class="edge">
<title>src/cli/format.mjs&#45;&gt;src/cli/utl/assert&#45;file&#45;existence.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M276.75,-432.77C314.39,-432.77 375,-432.77 375,-432.77 375,-432.77 375,-480.76 375,-480.76"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="372.9,-480.76 375,-486.76 377.1,-480.76 372.9,-480.76"/>
</g>
<!-- src/cli/format.mjs&#45;&gt;src/cli/utl/io.mjs -->
<g id="edge21" class="edge">
<title>src/cli/format.mjs&#45;&gt;src/cli/utl/io.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M276.66,-429.23C327.97,-429.23 429,-429.23 429,-429.23 429,-429.23 429,-450.75 429,-450.75"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="426.9,-450.75 429,-456.75 431.1,-450.75 426.9,-450.75"/>
</g>
<!-- src/main/format.mjs -->
<g id="node24" class="node">
<title>src/main/format.mjs</title>
<g id="a_node24"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/format.mjs" xlink:title="format.mjs">
<path fill="#ffcccc" stroke="black" d="M751.33,-2519.88C751.33,-2519.88 705.17,-2519.88 705.17,-2519.88 702.21,-2519.88 699.25,-2516.92 699.25,-2513.96 699.25,-2513.96 699.25,-2508.04 699.25,-2508.04 699.25,-2505.08 702.21,-2502.12 705.17,-2502.12 705.17,-2502.12 751.33,-2502.12 751.33,-2502.12 754.29,-2502.12 757.25,-2505.08 757.25,-2508.04 757.25,-2508.04 757.25,-2513.96 757.25,-2513.96 757.25,-2516.92 754.29,-2519.88 751.33,-2519.88"/>
<text xml:space="preserve" text-anchor="start" x="707.25" y="-2507.32" font-family="Helvetica,sans-Serif" font-size="9.00">format.mjs</text>
</a>
</g>
</g>
<!-- src/cli/format.mjs&#45;&gt;src/main/format.mjs -->
<g id="edge22" class="edge">
<title>src/cli/format.mjs&#45;&gt;src/main/format.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M276.87,-425.68C372.69,-425.68 670,-425.68 670,-425.68 670,-425.68 670,-2508.04 670,-2508.04 670,-2508.04 689.76,-2508.04 689.76,-2508.04"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="689.76,-2510.14 695.76,-2508.04 689.76,-2505.94 689.76,-2510.14"/>
</g>
<!-- bin/dependency&#45;cruise.mjs -->
<g id="node6" class="node">
<title>bin/dependency&#45;cruise.mjs</title>
<g id="a_node6"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/bin/dependency-cruise.mjs" xlink:title="dependency&#45;cruise.mjs">
<path fill="#ffffcc" stroke="black" d="M122.83,-499.88C122.83,-499.88 23.42,-499.88 23.42,-499.88 20.46,-499.88 17.5,-496.92 17.5,-493.96 17.5,-493.96 17.5,-488.04 17.5,-488.04 17.5,-485.08 20.46,-482.12 23.42,-482.12 23.42,-482.12 122.83,-482.12 122.83,-482.12 125.79,-482.12 128.75,-485.08 128.75,-488.04 128.75,-488.04 128.75,-493.96 128.75,-493.96 128.75,-496.92 125.79,-499.88 122.83,-499.88"/>
<text xml:space="preserve" text-anchor="start" x="25.5" y="-487.32" font-family="Helvetica,sans-Serif" font-size="9.00">dependency&#45;cruise.mjs</text>
</a>
</g>
</g>
<!-- bin/dependency&#45;cruise.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs -->
<g id="edge5" class="edge">
<title>bin/dependency&#45;cruise.mjs&#45;&gt;src/cli/assert&#45;node&#45;environment&#45;suitable.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M129.09,-488.04C149.19,-488.04 167,-488.04 167,-488.04 167,-488.04 167,-479.18 167,-479.18"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="169.1,-479.18 167,-473.18 164.9,-479.18 169.1,-479.18"/>
</g>
<!-- bin/dependency&#45;cruise.mjs&#45;&gt;src/cli/index.mjs -->
<g id="edge6" class="edge">
<title>bin/dependency&#45;cruise.mjs&#45;&gt;src/cli/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M128.78,-490.01C128.78,-490.01 210.61,-490.01 210.61,-490.01"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="210.61,-492.11 216.61,-490.01 210.61,-487.91 210.61,-492.11"/>
</g>
<!-- bin/wrap&#45;stream&#45;in&#45;html.mjs -->
<g id="node7" class="node">
<title>bin/wrap&#45;stream&#45;in&#45;html.mjs</title>
<g id="a_node7"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/bin/wrap-stream-in-html.mjs" xlink:title="wrap&#45;stream&#45;in&#45;html.mjs">
<path fill="#ffffcc" stroke="black" d="M124.33,-529.88C124.33,-529.88 21.92,-529.88 21.92,-529.88 18.96,-529.88 16,-526.92 16,-523.96 16,-523.96 16,-518.04 16,-518.04 16,-515.08 18.96,-512.12 21.92,-512.12 21.92,-512.12 124.33,-512.12 124.33,-512.12 127.29,-512.12 130.25,-515.08 130.25,-518.04 130.25,-518.04 130.25,-523.96 130.25,-523.96 130.25,-526.92 127.29,-529.88 124.33,-529.88"/>
<text xml:space="preserve" text-anchor="start" x="24" y="-517.33" font-family="Helvetica,sans-Serif" font-size="9.00">wrap&#45;stream&#45;in&#45;html.mjs</text>
</a>
</g>
</g>
<!-- src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs -->
<g id="node8" class="node">
<title>src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs</title>
<g id="a_node8"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/tools/wrap-stream-in-html.mjs" xlink:title="not&#45;reachable&#45;from&#45;folder&#45;index">
<path fill="#ccccff" stroke="blue" d="M298.71,-533.88C298.71,-533.88 196.29,-533.88 196.29,-533.88 193.33,-533.88 190.38,-530.92 190.38,-527.96 190.38,-527.96 190.38,-522.04 190.38,-522.04 190.38,-519.08 193.33,-516.12 196.29,-516.12 196.29,-516.12 298.71,-516.12 298.71,-516.12 301.67,-516.12 304.62,-519.08 304.62,-522.04 304.62,-522.04 304.62,-527.96 304.62,-527.96 304.62,-530.92 301.67,-533.88 298.71,-533.88"/>
<text xml:space="preserve" text-anchor="start" x="198.38" y="-521.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">wrap&#45;stream&#45;in&#45;html.mjs</text>
</a>
</g>
</g>
<!-- bin/wrap&#45;stream&#45;in&#45;html.mjs&#45;&gt;src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs -->
<g id="edge7" class="edge">
<title>bin/wrap&#45;stream&#45;in&#45;html.mjs&#45;&gt;src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M130.71,-523C130.71,-523 180.95,-523 180.95,-523"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="180.95,-525.1 186.95,-523 180.95,-520.9 180.95,-525.1"/>
</g>
<!-- src/report/dot&#45;webpage -->
<g id="node51" class="node">
<title>src/report/dot&#45;webpage</title>
<g id="a_node51"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/dot-webpage" xlink:title="dot&#45;webpage">
<polygon fill="#ffccff" stroke="black" points="1052.5,-2035.88 984.47,-2035.88 982.5,-2033.9 982.5,-2018.12 1050.53,-2018.12 1052.5,-2020.1 1052.5,-2035.88"/>
<polyline fill="none" stroke="black" points="1050.53,-2033.9 982.5,-2033.9"/>
<polyline fill="none" stroke="black" points="1050.53,-2033.9 1050.53,-2018.12"/>
<polyline fill="none" stroke="black" points="1050.53,-2033.9 1052.5,-2035.88"/>
<text xml:space="preserve" text-anchor="start" x="990.5" y="-2023.33" font-family="Helvetica,sans-Serif" font-size="9.00">dot&#45;webpage</text>
</a>
</g>
</g>
<!-- src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs&#45;&gt;src/report/dot&#45;webpage -->
<g id="edge70" class="edge">
<title>src/cli/tools/wrap&#45;stream&#45;in&#45;html.mjs&#45;&gt;src/report/dot&#45;webpage</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M247,-534.2C247,-659.71 247,-2027 247,-2027 247,-2027 973.11,-2027 973.11,-2027"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="973.11,-2029.1 979.11,-2027 973.11,-2024.9 973.11,-2029.1"/>
</g>
<!-- src/cache/cache.mjs -->
<g id="node9" class="node">
<title>src/cache/cache.mjs</title>
<g id="a_node9"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/cache.mjs" xlink:title="cache.mjs">
<path fill="#ffffcc" stroke="black" d="M1040.21,-1801.88C1040.21,-1801.88 994.79,-1801.88 994.79,-1801.88 991.83,-1801.88 988.88,-1798.92 988.88,-1795.96 988.88,-1795.96 988.88,-1790.04 988.88,-1790.04 988.88,-1787.08 991.83,-1784.12 994.79,-1784.12 994.79,-1784.12 1040.21,-1784.12 1040.21,-1784.12 1043.17,-1784.12 1046.12,-1787.08 1046.12,-1790.04 1046.12,-1790.04 1046.12,-1795.96 1046.12,-1795.96 1046.12,-1798.92 1043.17,-1801.88 1040.21,-1801.88"/>
<text xml:space="preserve" text-anchor="start" x="996.88" y="-1789.33" font-family="Helvetica,sans-Serif" font-size="9.00">cache.mjs</text>
</a>
</g>
</g>
<!-- src/cache/content&#45;strategy.mjs -->
<g id="node10" class="node">
<title>src/cache/content&#45;strategy.mjs</title>
<g id="a_node10"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/content-strategy.mjs" xlink:title="content&#45;strategy.mjs">
<path fill="#ffffcc" stroke="black" d="M1197.83,-1845.88C1197.83,-1845.88 1111.92,-1845.88 1111.92,-1845.88 1108.96,-1845.88 1106,-1842.92 1106,-1839.96 1106,-1839.96 1106,-1834.04 1106,-1834.04 1106,-1831.08 1108.96,-1828.12 1111.92,-1828.12 1111.92,-1828.12 1197.83,-1828.12 1197.83,-1828.12 1200.79,-1828.12 1203.75,-1831.08 1203.75,-1834.04 1203.75,-1834.04 1203.75,-1839.96 1203.75,-1839.96 1203.75,-1842.92 1200.79,-1845.88 1197.83,-1845.88"/>
<text xml:space="preserve" text-anchor="start" x="1114" y="-1833.33" font-family="Helvetica,sans-Serif" font-size="9.00">content&#45;strategy.mjs</text>
</a>
</g>
</g>
<!-- src/cache/cache.mjs&#45;&gt;src/cache/content&#45;strategy.mjs -->
<g id="edge8" class="edge">
<title>src/cache/cache.mjs&#45;&gt;src/cache/content&#45;strategy.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1003,-1802.33C1003,-1815.25 1003,-1837 1003,-1837 1003,-1837 1096.54,-1837 1096.54,-1837"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1096.54,-1839.1 1102.54,-1837 1096.54,-1834.9 1096.54,-1839.1"/>
</g>
<!-- src/cache/metadata&#45;strategy.mjs -->
<g id="node11" class="node">
<title>src/cache/metadata&#45;strategy.mjs</title>
<g id="a_node11"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/metadata-strategy.mjs" xlink:title="metadata&#45;strategy.mjs">
<path fill="#ffffcc" stroke="black" d="M1369.33,-1831.88C1369.33,-1831.88 1275.17,-1831.88 1275.17,-1831.88 1272.21,-1831.88 1269.25,-1828.92 1269.25,-1825.96 1269.25,-1825.96 1269.25,-1820.04 1269.25,-1820.04 1269.25,-1817.08 1272.21,-1814.12 1275.17,-1814.12 1275.17,-1814.12 1369.33,-1814.12 1369.33,-1814.12 1372.29,-1814.12 1375.25,-1817.08 1375.25,-1820.04 1375.25,-1820.04 1375.25,-1825.96 1375.25,-1825.96 1375.25,-1828.92 1372.29,-1831.88 1369.33,-1831.88"/>
<text xml:space="preserve" text-anchor="start" x="1277.25" y="-1819.33" font-family="Helvetica,sans-Serif" font-size="9.00">metadata&#45;strategy.mjs</text>
</a>
</g>
</g>
<!-- src/cache/cache.mjs&#45;&gt;src/cache/metadata&#45;strategy.mjs -->
<g id="edge9" class="edge">
<title>src/cache/cache.mjs&#45;&gt;src/cache/metadata&#45;strategy.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1017,-1802.18C1017,-1810.67 1017,-1822 1017,-1822 1017,-1822 1260.05,-1822 1260.05,-1822"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1260.05,-1824.1 1266.05,-1822 1260.05,-1819.9 1260.05,-1824.1"/>
</g>
<!-- src/cache/options&#45;compatible.mjs -->
<g id="node12" class="node">
<title>src/cache/options&#45;compatible.mjs</title>
<g id="a_node12"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/options-compatible.mjs" xlink:title="options&#45;compatible.mjs">
<path fill="#ffffcc" stroke="black" d="M1204.21,-1815.88C1204.21,-1815.88 1105.54,-1815.88 1105.54,-1815.88 1102.58,-1815.88 1099.62,-1812.92 1099.62,-1809.96 1099.62,-1809.96 1099.62,-1804.04 1099.62,-1804.04 1099.62,-1801.08 1102.58,-1798.12 1105.54,-1798.12 1105.54,-1798.12 1204.21,-1798.12 1204.21,-1798.12 1207.17,-1798.12 1210.12,-1801.08 1210.12,-1804.04 1210.12,-1804.04 1210.12,-1809.96 1210.12,-1809.96 1210.12,-1812.92 1207.17,-1815.88 1204.21,-1815.88"/>
<text xml:space="preserve" text-anchor="start" x="1107.62" y="-1803.33" font-family="Helvetica,sans-Serif" font-size="9.00">options&#45;compatible.mjs</text>
</a>
</g>
</g>
<!-- src/cache/cache.mjs&#45;&gt;src/cache/options&#45;compatible.mjs -->
<g id="edge10" class="edge">
<title>src/cache/cache.mjs&#45;&gt;src/cache/options&#45;compatible.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1032,-1802.05C1032,-1805.62 1032,-1808.88 1032,-1808.88 1032,-1808.88 1090.16,-1808.88 1090.16,-1808.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1090.16,-1810.98 1096.16,-1808.88 1090.16,-1806.78 1090.16,-1810.98"/>
</g>
<!-- src/extract/transpile/meta.mjs -->
<g id="node13" class="node">
<title>src/extract/transpile/meta.mjs</title>
<g id="a_node13"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/meta.mjs" xlink:title="meta.mjs">
<path fill="#ccffcc" stroke="black" d="M1343.33,-1431.88C1343.33,-1431.88 1301.17,-1431.88 1301.17,-1431.88 1298.21,-1431.88 1295.25,-1428.92 1295.25,-1425.96 1295.25,-1425.96 1295.25,-1420.04 1295.25,-1420.04 1295.25,-1417.08 1298.21,-1414.12 1301.17,-1414.12 1301.17,-1414.12 1343.33,-1414.12 1343.33,-1414.12 1346.29,-1414.12 1349.25,-1417.08 1349.25,-1420.04 1349.25,-1420.04 1349.25,-1425.96 1349.25,-1425.96 1349.25,-1428.92 1346.29,-1431.88 1343.33,-1431.88"/>
<text xml:space="preserve" text-anchor="start" x="1303.88" y="-1419.33" font-family="Helvetica,sans-Serif" font-size="9.00">meta.mjs</text>
</a>
</g>
</g>
<!-- src/cache/cache.mjs&#45;&gt;src/extract/transpile/meta.mjs -->
<g id="edge11" class="edge">
<title>src/cache/cache.mjs&#45;&gt;src/extract/transpile/meta.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1046.22,-1788.79C1102.32,-1788.79 1221,-1788.79 1221,-1788.79 1221,-1788.79 1221,-1425.96 1221,-1425.96 1221,-1425.96 1285.82,-1425.96 1285.82,-1425.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.82,-1428.06 1291.82,-1425.96 1285.82,-1423.86 1285.82,-1428.06"/>
</g>
<!-- src/cache/find&#45;content&#45;changes.mjs -->
<g id="node14" class="node">
<title>src/cache/find&#45;content&#45;changes.mjs</title>
<g id="a_node14"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/find-content-changes.mjs" xlink:title="find&#45;content&#45;changes.mjs">
<path fill="#ffffcc" stroke="black" d="M1375.71,-1801.88C1375.71,-1801.88 1268.79,-1801.88 1268.79,-1801.88 1265.83,-1801.88 1262.88,-1798.92 1262.88,-1795.96 1262.88,-1795.96 1262.88,-1790.04 1262.88,-1790.04 1262.88,-1787.08 1265.83,-1784.12 1268.79,-1784.12 1268.79,-1784.12 1375.71,-1784.12 1375.71,-1784.12 1378.67,-1784.12 1381.62,-1787.08 1381.62,-1790.04 1381.62,-1790.04 1381.62,-1795.96 1381.62,-1795.96 1381.62,-1798.92 1378.67,-1801.88 1375.71,-1801.88"/>
<text xml:space="preserve" text-anchor="start" x="1270.88" y="-1789.33" font-family="Helvetica,sans-Serif" font-size="9.00">find&#45;content&#45;changes.mjs</text>
</a>
</g>
</g>
<!-- src/cache/content&#45;strategy.mjs&#45;&gt;src/cache/find&#45;content&#45;changes.mjs -->
<g id="edge12" class="edge">
<title>src/cache/content&#45;strategy.mjs&#45;&gt;src/cache/find&#45;content&#45;changes.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1204.15,-1834.21C1218.31,-1834.21 1230,-1834.21 1230,-1834.21 1230,-1834.21 1230,-1793.46 1230,-1793.46 1230,-1793.46 1253.5,-1793.46 1253.5,-1793.46"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1253.5,-1795.56 1259.5,-1793.46 1253.5,-1791.36 1253.5,-1795.56"/>
</g>
<!-- src/cache/helpers.mjs -->
<g id="node15" class="node">
<title>src/cache/helpers.mjs</title>
<g id="a_node15"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cache/helpers.mjs" xlink:title="helpers.mjs">
<path fill="#ffffcc" stroke="black" d="M1526.58,-1838.88C1526.58,-1838.88 1475.17,-1838.88 1475.17,-1838.88 1472.21,-1838.88 1469.25,-1835.92 1469.25,-1832.96 1469.25,-1832.96 1469.25,-1827.04 1469.25,-1827.04 1469.25,-1824.08 1472.21,-1821.12 1475.17,-1821.12 1475.17,-1821.12 1526.58,-1821.12 1526.58,-1821.12 1529.54,-1821.12 1532.5,-1824.08 1532.5,-1827.04 1532.5,-1827.04 1532.5,-1832.96 1532.5,-1832.96 1532.5,-1835.92 1529.54,-1838.88 1526.58,-1838.88"/>
<text xml:space="preserve" text-anchor="start" x="1477.25" y="-1826.33" font-family="Helvetica,sans-Serif" font-size="9.00">helpers.mjs</text>
</a>
</g>
</g>
<!-- src/cache/content&#45;strategy.mjs&#45;&gt;src/cache/helpers.mjs -->
<g id="edge13" class="edge">
<title>src/cache/content&#45;strategy.mjs&#45;&gt;src/cache/helpers.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1204.08,-1836.54C1204.08,-1836.54 1459.86,-1836.54 1459.86,-1836.54"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1459.86,-1838.64 1465.86,-1836.54 1459.86,-1834.44 1459.86,-1838.64"/>
</g>
<!-- src/cache/metadata&#45;strategy.mjs&#45;&gt;src/cache/helpers.mjs -->
<g id="edge17" class="edge">
<title>src/cache/metadata&#45;strategy.mjs&#45;&gt;src/cache/helpers.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1375.36,-1826.5C1375.36,-1826.5 1459.93,-1826.5 1459.93,-1826.5"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1459.93,-1828.6 1465.93,-1826.5 1459.93,-1824.4 1459.93,-1828.6"/>
</g>
<!-- src/extract/swc/parse.mjs -->
<g id="node97" class="node">
<title>src/extract/swc/parse.mjs</title>
<g id="a_node97"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/swc/parse.mjs" xlink:title="parse.mjs">
<path fill="#ccffcc" stroke="black" d="M1522.83,-1281.88C1522.83,-1281.88 1478.92,-1281.88 1478.92,-1281.88 1475.96,-1281.88 1473,-1278.92 1473,-1275.96 1473,-1275.96 1473,-1270.04 1473,-1270.04 1473,-1267.08 1475.96,-1264.12 1478.92,-1264.12 1478.92,-1264.12 1522.83,-1264.12 1522.83,-1264.12 1525.79,-1264.12 1528.75,-1267.08 1528.75,-1270.04 1528.75,-1270.04 1528.75,-1275.96 1528.75,-1275.96 1528.75,-1278.92 1525.79,-1281.88 1522.83,-1281.88"/>
<text xml:space="preserve" text-anchor="start" x="1481" y="-1269.33" font-family="Helvetica,sans-Serif" font-size="9.00">parse.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/swc/parse.mjs -->
<g id="edge193" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/swc/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.71,-1423C1370.68,-1423 1396,-1423 1396,-1423 1396,-1423 1396,-1276.04 1396,-1276.04 1396,-1276.04 1463.74,-1276.04 1463.74,-1276.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1463.74,-1278.14 1469.74,-1276.04 1463.74,-1273.94 1463.74,-1278.14"/>
</g>
<!-- src/extract/transpile/babel&#45;wrap.mjs -->
<g id="node115" class="node">
<title>src/extract/transpile/babel&#45;wrap.mjs</title>
<g id="a_node115"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/babel-wrap.mjs" xlink:title="babel&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1534.46,-1401.88C1534.46,-1401.88 1467.29,-1401.88 1467.29,-1401.88 1464.33,-1401.88 1461.38,-1398.92 1461.38,-1395.96 1461.38,-1395.96 1461.38,-1390.04 1461.38,-1390.04 1461.38,-1387.08 1464.33,-1384.12 1467.29,-1384.12 1467.29,-1384.12 1534.46,-1384.12 1534.46,-1384.12 1537.42,-1384.12 1540.38,-1387.08 1540.38,-1390.04 1540.38,-1390.04 1540.38,-1395.96 1540.38,-1395.96 1540.38,-1398.92 1537.42,-1401.88 1534.46,-1401.88"/>
<text xml:space="preserve" text-anchor="start" x="1469.38" y="-1389.33" font-family="Helvetica,sans-Serif" font-size="9.00">babel&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/babel&#45;wrap.mjs -->
<g id="edge194" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/babel&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.43,-1420.78C1364.41,-1420.78 1380,-1420.78 1380,-1420.78 1380,-1420.78 1380,-1390.78 1380,-1390.78 1380,-1390.78 1451.93,-1390.78 1451.93,-1390.78"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1451.93,-1392.88 1457.93,-1390.78 1451.93,-1388.68 1451.93,-1392.88"/>
</g>
<!-- src/extract/transpile/coffeescript&#45;wrap.mjs -->
<g id="node116" class="node">
<title>src/extract/transpile/coffeescript&#45;wrap.mjs</title>
<g id="a_node116"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/coffeescript-wrap.mjs" xlink:title="coffeescript&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1546.08,-1431.88C1546.08,-1431.88 1455.67,-1431.88 1455.67,-1431.88 1452.71,-1431.88 1449.75,-1428.92 1449.75,-1425.96 1449.75,-1425.96 1449.75,-1420.04 1449.75,-1420.04 1449.75,-1417.08 1452.71,-1414.12 1455.67,-1414.12 1455.67,-1414.12 1546.08,-1414.12 1546.08,-1414.12 1549.04,-1414.12 1552,-1417.08 1552,-1420.04 1552,-1420.04 1552,-1425.96 1552,-1425.96 1552,-1428.92 1549.04,-1431.88 1546.08,-1431.88"/>
<text xml:space="preserve" text-anchor="start" x="1457.75" y="-1419.33" font-family="Helvetica,sans-Serif" font-size="9.00">coffeescript&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/coffeescript&#45;wrap.mjs -->
<g id="edge195" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/coffeescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.38,-1425.22C1349.38,-1425.22 1440.33,-1425.22 1440.33,-1425.22"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1440.33,-1427.32 1446.33,-1425.22 1440.33,-1423.12 1440.33,-1427.32"/>
</g>
<!-- src/extract/transpile/javascript&#45;wrap.mjs -->
<g id="node117" class="node">
<title>src/extract/transpile/javascript&#45;wrap.mjs</title>
<g id="a_node117"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/javascript-wrap.mjs" xlink:title="javascript&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1542.33,-1491.88C1542.33,-1491.88 1459.42,-1491.88 1459.42,-1491.88 1456.46,-1491.88 1453.5,-1488.92 1453.5,-1485.96 1453.5,-1485.96 1453.5,-1480.04 1453.5,-1480.04 1453.5,-1477.08 1456.46,-1474.12 1459.42,-1474.12 1459.42,-1474.12 1542.33,-1474.12 1542.33,-1474.12 1545.29,-1474.12 1548.25,-1477.08 1548.25,-1480.04 1548.25,-1480.04 1548.25,-1485.96 1548.25,-1485.96 1548.25,-1488.92 1545.29,-1491.88 1542.33,-1491.88"/>
<text xml:space="preserve" text-anchor="start" x="1461.5" y="-1479.33" font-family="Helvetica,sans-Serif" font-size="9.00">javascript&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/javascript&#45;wrap.mjs -->
<g id="edge196" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/javascript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1322,-1432.2C1322,-1449.55 1322,-1485.38 1322,-1485.38 1322,-1485.38 1444.38,-1485.38 1444.38,-1485.38"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1444.38,-1487.48 1450.38,-1485.38 1444.38,-1483.28 1444.38,-1487.48"/>
</g>
<!-- src/extract/transpile/livescript&#45;wrap.mjs -->
<g id="node118" class="node">
<title>src/extract/transpile/livescript&#45;wrap.mjs</title>
<g id="a_node118"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/livescript-wrap.mjs" xlink:title="livescript&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1540.83,-1461.88C1540.83,-1461.88 1460.92,-1461.88 1460.92,-1461.88 1457.96,-1461.88 1455,-1458.92 1455,-1455.96 1455,-1455.96 1455,-1450.04 1455,-1450.04 1455,-1447.08 1457.96,-1444.12 1460.92,-1444.12 1460.92,-1444.12 1540.83,-1444.12 1540.83,-1444.12 1543.79,-1444.12 1546.75,-1447.08 1546.75,-1450.04 1546.75,-1450.04 1546.75,-1455.96 1546.75,-1455.96 1546.75,-1458.92 1543.79,-1461.88 1540.83,-1461.88"/>
<text xml:space="preserve" text-anchor="start" x="1463" y="-1449.33" font-family="Helvetica,sans-Serif" font-size="9.00">livescript&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/livescript&#45;wrap.mjs -->
<g id="edge197" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/livescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1336,-1432.36C1336,-1442.1 1336,-1455.96 1336,-1455.96 1336,-1455.96 1445.48,-1455.96 1445.48,-1455.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1445.48,-1458.06 1451.48,-1455.96 1445.48,-1453.86 1445.48,-1458.06"/>
</g>
<!-- src/extract/transpile/svelte&#45;wrap.mjs -->
<g id="node119" class="node">
<title>src/extract/transpile/svelte&#45;wrap.mjs</title>
<g id="a_node119"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/svelte-wrap.mjs" xlink:title="svelte&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1534.83,-1371.88C1534.83,-1371.88 1466.92,-1371.88 1466.92,-1371.88 1463.96,-1371.88 1461,-1368.92 1461,-1365.96 1461,-1365.96 1461,-1360.04 1461,-1360.04 1461,-1357.08 1463.96,-1354.12 1466.92,-1354.12 1466.92,-1354.12 1534.83,-1354.12 1534.83,-1354.12 1537.79,-1354.12 1540.75,-1357.08 1540.75,-1360.04 1540.75,-1360.04 1540.75,-1365.96 1540.75,-1365.96 1540.75,-1368.92 1537.79,-1371.88 1534.83,-1371.88"/>
<text xml:space="preserve" text-anchor="start" x="1469" y="-1359.33" font-family="Helvetica,sans-Serif" font-size="9.00">svelte&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/svelte&#45;wrap.mjs -->
<g id="edge198" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/svelte&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.47,-1418.56C1363.62,-1418.56 1378,-1418.56 1378,-1418.56 1378,-1418.56 1378,-1365.96 1378,-1365.96 1378,-1365.96 1451.61,-1365.96 1451.61,-1365.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1451.61,-1368.06 1457.61,-1365.96 1451.61,-1363.86 1451.61,-1368.06"/>
</g>
<!-- src/extract/transpile/typescript&#45;wrap.mjs -->
<g id="node120" class="node">
<title>src/extract/transpile/typescript&#45;wrap.mjs</title>
<g id="a_node120"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/typescript-wrap.mjs" xlink:title="typescript&#45;wrap.mjs">
<path fill="#ccffcc" stroke="black" d="M1542.33,-1521.88C1542.33,-1521.88 1459.42,-1521.88 1459.42,-1521.88 1456.46,-1521.88 1453.5,-1518.92 1453.5,-1515.96 1453.5,-1515.96 1453.5,-1510.04 1453.5,-1510.04 1453.5,-1507.08 1456.46,-1504.12 1459.42,-1504.12 1459.42,-1504.12 1542.33,-1504.12 1542.33,-1504.12 1545.29,-1504.12 1548.25,-1507.08 1548.25,-1510.04 1548.25,-1510.04 1548.25,-1515.96 1548.25,-1515.96 1548.25,-1518.92 1545.29,-1521.88 1542.33,-1521.88"/>
<text xml:space="preserve" text-anchor="start" x="1461.5" y="-1509.33" font-family="Helvetica,sans-Serif" font-size="9.00">typescript&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/typescript&#45;wrap.mjs -->
<g id="edge200" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/typescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.63,-1429.66C1353.94,-1429.66 1357,-1429.66 1357,-1429.66 1357,-1429.66 1357,-1516.88 1357,-1516.88 1357,-1516.88 1444.34,-1516.88 1444.34,-1516.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1444.34,-1518.98 1450.34,-1516.88 1444.34,-1514.78 1444.34,-1518.98"/>
</g>
<!-- src/extract/transpile/vue&#45;template&#45;wrap.cjs -->
<g id="node121" class="node">
<title>src/extract/transpile/vue&#45;template&#45;wrap.cjs</title>
<g id="a_node121"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/vue-template-wrap.cjs" xlink:title="vue&#45;template&#45;wrap.cjs">
<path fill="#ccffcc" stroke="black" d="M1547.96,-1341.88C1547.96,-1341.88 1453.79,-1341.88 1453.79,-1341.88 1450.83,-1341.88 1447.88,-1338.92 1447.88,-1335.96 1447.88,-1335.96 1447.88,-1330.04 1447.88,-1330.04 1447.88,-1327.08 1450.83,-1324.12 1453.79,-1324.12 1453.79,-1324.12 1547.96,-1324.12 1547.96,-1324.12 1550.92,-1324.12 1553.88,-1327.08 1553.88,-1330.04 1553.88,-1330.04 1553.88,-1335.96 1553.88,-1335.96 1553.88,-1338.92 1550.92,-1341.88 1547.96,-1341.88"/>
<text xml:space="preserve" text-anchor="start" x="1455.88" y="-1329.33" font-family="Helvetica,sans-Serif" font-size="9.00">vue&#45;template&#45;wrap.cjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/vue&#45;template&#45;wrap.cjs -->
<g id="edge201" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/vue&#45;template&#45;wrap.cjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.44,-1416.34C1362.77,-1416.34 1376,-1416.34 1376,-1416.34 1376,-1416.34 1376,-1333 1376,-1333 1376,-1333 1438.53,-1333 1438.53,-1333"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1438.53,-1335.1 1444.53,-1333 1438.53,-1330.9 1438.53,-1335.1"/>
</g>
<!-- src/extract/transpile/try&#45;import&#45;available.mjs -->
<g id="node123" class="node">
<title>src/extract/transpile/try&#45;import&#45;available.mjs</title>
<g id="a_node123"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/try-import-available.mjs" xlink:title="try&#45;import&#45;available.mjs">
<path fill="#ccffcc" stroke="black" d="M1550.58,-1551.88C1550.58,-1551.88 1451.17,-1551.88 1451.17,-1551.88 1448.21,-1551.88 1445.25,-1548.92 1445.25,-1545.96 1445.25,-1545.96 1445.25,-1540.04 1445.25,-1540.04 1445.25,-1537.08 1448.21,-1534.12 1451.17,-1534.12 1451.17,-1534.12 1550.58,-1534.12 1550.58,-1534.12 1553.54,-1534.12 1556.5,-1537.08 1556.5,-1540.04 1556.5,-1540.04 1556.5,-1545.96 1556.5,-1545.96 1556.5,-1548.92 1553.54,-1551.88 1550.58,-1551.88"/>
<text xml:space="preserve" text-anchor="start" x="1453.25" y="-1539.33" font-family="Helvetica,sans-Serif" font-size="9.00">try&#45;import&#45;available.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/try&#45;import&#45;available.mjs -->
<g id="edge199" class="edge">
<title>src/extract/transpile/meta.mjs&#45;&gt;src/extract/transpile/try&#45;import&#45;available.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.66,-1427.44C1370.99,-1427.44 1397,-1427.44 1397,-1427.44 1397,-1427.44 1397,-1543 1397,-1543 1397,-1543 1435.96,-1543 1435.96,-1543"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1435.96,-1545.1 1441.96,-1543 1435.96,-1540.9 1435.96,-1545.1"/>
</g>
<!-- src/cache/find&#45;content&#45;changes.mjs&#45;&gt;src/cache/helpers.mjs -->
<g id="edge14" class="edge">
<title>src/cache/find&#45;content&#45;changes.mjs&#45;&gt;src/cache/helpers.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M1381.77,-1796.88C1433.77,-1796.88 1501,-1796.88 1501,-1796.88 1501,-1796.88 1501,-1811.92 1501,-1811.92"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1498.9,-1811.92 1501,-1817.92 1503.1,-1811.92 1498.9,-1811.92"/>
</g>
<!-- src/utl/find&#45;all&#45;files.mjs -->
<g id="node16" class="node">
<title>src/utl/find&#45;all&#45;files.mjs</title>
<g id="a_node16"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/find-all-files.mjs" xlink:title="utl&#45;module&#45;not&#45;shared&#45;enough">
<path fill="#cccccc" stroke="blue" d="M1698.46,-1761.88C1698.46,-1761.88 1630.54,-1761.88 1630.54,-1761.88 1627.58,-1761.88 1624.62,-1758.92 1624.62,-1755.96 1624.62,-1755.96 1624.62,-1750.04 1624.62,-1750.04 1624.62,-1747.08 1627.58,-1744.12 1630.54,-1744.12 1630.54,-1744.12 1698.46,-1744.12 1698.46,-1744.12 1701.42,-1744.12 1704.38,-1747.08 1704.38,-1750.04 1704.38,-1750.04 1704.38,-1755.96 1704.38,-1755.96 1704.38,-1758.92 1701.42,-1761.88 1698.46,-1761.88"/>
<text xml:space="preserve" text-anchor="start" x="1632.62" y="-1749.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">find&#45;all&#45;files.mjs</text>
</a>
</g>
</g>
<!-- src/cache/find&#45;content&#45;changes.mjs&#45;&gt;src/utl/find&#45;all&#45;files.mjs -->
<g id="edge15" class="edge">
<title>src/cache/find&#45;content&#45;changes.mjs&#45;&gt;src/utl/find&#45;all&#45;files.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1374,-1783.65C1374,-1772.68 1374,-1755.96 1374,-1755.96 1374,-1755.96 1615.39,-1755.96 1615.39,-1755.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1615.39,-1758.06 1621.39,-1755.96 1615.39,-1753.86 1615.39,-1758.06"/>
</g>
<!-- src/graph&#45;utl/match&#45;facade.mjs -->
<g id="node17" class="node">
<title>src/graph&#45;utl/match&#45;facade.mjs</title>
<g id="a_node17"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/match-facade.mjs" xlink:title="match&#45;facade.mjs">
<path fill="#ffcccc" stroke="black" d="M1702.58,-2378.88C1702.58,-2378.88 1626.42,-2378.88 1626.42,-2378.88 1623.46,-2378.88 1620.5,-2375.92 1620.5,-2372.96 1620.5,-2372.96 1620.5,-2367.04 1620.5,-2367.04 1620.5,-2364.08 1623.46,-2361.12 1626.42,-2361.12 1626.42,-2361.12 1702.58,-2361.12 1702.58,-2361.12 1705.54,-2361.12 1708.5,-2364.08 1708.5,-2367.04 1708.5,-2367.04 1708.5,-2372.96 1708.5,-2372.96 1708.5,-2375.92 1705.54,-2378.88 1702.58,-2378.88"/>
<text xml:space="preserve" text-anchor="start" x="1628.5" y="-2366.32" font-family="Helvetica,sans-Serif" font-size="9.00">match&#45;facade.mjs</text>
</a>
</g>
</g>
<!-- src/cache/helpers.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs -->
<g id="edge16" class="edge">
<title>src/cache/helpers.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1532.9,-1828C1569.38,-1828 1624,-1828 1624,-1828 1624,-1828 1624,-2352.02 1624,-2352.02"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1621.9,-2352.02 1624,-2358.02 1626.1,-2352.02 1621.9,-2352.02"/>
</g>
<!-- src/utl/path&#45;to&#45;posix.mjs -->
<g id="node105" class="node">
<title>src/utl/path&#45;to&#45;posix.mjs</title>
<g id="a_node105"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/path-to-posix.mjs" xlink:title="path&#45;to&#45;posix.mjs">
<path fill="#cccccc" stroke="black" d="M1848.33,-1671.88C1848.33,-1671.88 1774.42,-1671.88 1774.42,-1671.88 1771.46,-1671.88 1768.5,-1668.92 1768.5,-1665.96 1768.5,-1665.96 1768.5,-1660.04 1768.5,-1660.04 1768.5,-1657.08 1771.46,-1654.12 1774.42,-1654.12 1774.42,-1654.12 1848.33,-1654.12 1848.33,-1654.12 1851.29,-1654.12 1854.25,-1657.08 1854.25,-1660.04 1854.25,-1660.04 1854.25,-1665.96 1854.25,-1665.96 1854.25,-1668.92 1851.29,-1671.88 1848.33,-1671.88"/>
<text xml:space="preserve" text-anchor="start" x="1776.5" y="-1659.33" font-family="Helvetica,sans-Serif" font-size="9.00">path&#45;to&#45;posix.mjs</text>
</a>
</g>
</g>
<!-- src/utl/find&#45;all&#45;files.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge283" class="edge">
<title>src/utl/find&#45;all&#45;files.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1704.69,-1753C1721.85,-1753 1738,-1753 1738,-1753 1738,-1753 1738,-1665.96 1738,-1665.96 1738,-1665.96 1759.24,-1665.96 1759.24,-1665.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1759.24,-1668.06 1765.24,-1665.96 1759.24,-1663.86 1759.24,-1668.06"/>
</g>
<!-- src/cli/defaults.mjs -->
<g id="node18" class="node">
<title>src/cli/defaults.mjs</title>
<g id="a_node18"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/defaults.mjs" xlink:title="defaults.mjs">
<path fill="#ccccff" stroke="black" d="M1043.96,-294.88C1043.96,-294.88 991.04,-294.88 991.04,-294.88 988.08,-294.88 985.12,-291.92 985.12,-288.96 985.12,-288.96 985.12,-283.04 985.12,-283.04 985.12,-280.08 988.08,-277.12 991.04,-277.12 991.04,-277.12 1043.96,-277.12 1043.96,-277.12 1046.92,-277.12 1049.88,-280.08 1049.88,-283.04 1049.88,-283.04 1049.88,-288.96 1049.88,-288.96 1049.88,-291.92 1046.92,-294.88 1043.96,-294.88"/>
<text xml:space="preserve" text-anchor="start" x="993.12" y="-282.32" font-family="Helvetica,sans-Serif" font-size="9.00">defaults.mjs</text>
</a>
</g>
</g>
<!-- src/main/index.mjs -->
<g id="node20" class="node">
<title>src/main/index.mjs</title>
<g id="a_node20"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/index.mjs" xlink:title="index.mjs">
<path fill="#ffcccc" stroke="black" d="M450.33,-2334.88C450.33,-2334.88 407.17,-2334.88 407.17,-2334.88 404.21,-2334.88 401.25,-2331.92 401.25,-2328.96 401.25,-2328.96 401.25,-2323.04 401.25,-2323.04 401.25,-2320.08 404.21,-2317.12 407.17,-2317.12 407.17,-2317.12 450.33,-2317.12 450.33,-2317.12 453.29,-2317.12 456.25,-2320.08 456.25,-2323.04 456.25,-2323.04 456.25,-2328.96 456.25,-2328.96 456.25,-2331.92 453.29,-2334.88 450.33,-2334.88"/>
<text xml:space="preserve" text-anchor="start" x="409.25" y="-2322.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/cli/format&#45;meta&#45;info.mjs&#45;&gt;src/main/index.mjs -->
<g id="edge18" class="edge">
<title>src/cli/format&#45;meta&#45;info.mjs&#45;&gt;src/main/index.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M478.73,-33C496.87,-33 513,-33 513,-33 513,-33 513,-2321.47 513,-2321.47 513,-2321.47 465.36,-2321.47 465.36,-2321.47"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="465.36,-2319.38 459.36,-2321.48 465.36,-2323.58 465.36,-2319.38"/>
</g>
<!-- src/main/index.mjs&#45;&gt;src/extract/transpile/meta.mjs -->
<g id="edge244" class="edge">
<title>src/main/index.mjs&#45;&gt;src/extract/transpile/meta.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M429,-2316.76C429,-2224.85 429,-1477.88 429,-1477.88 429,-1477.88 1309,-1477.88 1309,-1477.88 1309,-1477.88 1309,-1441.09 1309,-1441.09"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1311.1,-1441.09 1309,-1435.09 1306.9,-1441.09 1311.1,-1441.09"/>
</g>
<!-- src/main/index.mjs&#45;&gt;src/main/format.mjs -->
<g id="edge243" class="edge">
<title>src/main/index.mjs&#45;&gt;src/main/format.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M456.67,-2324.82C482.53,-2324.82 517,-2324.82 517,-2324.82 517,-2324.82 517,-2513.96 517,-2513.96 517,-2513.96 689.85,-2513.96 689.85,-2513.96"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="689.85,-2516.06 695.85,-2513.96 689.85,-2511.86 689.85,-2516.06"/>
</g>
<!-- src/main/index.mjs&#45;&gt;src/main/cruise.mjs -->
<g id="edge242" class="edge">
<title>src/main/index.mjs&#45;&gt;src/main/cruise.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M429,-2335.18C429,-2353.75 429,-2394.04 429,-2394.04 429,-2394.04 556.75,-2394.04 556.75,-2394.04"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="556.75,-2396.14 562.75,-2394.04 556.75,-2391.94 556.75,-2396.14"/>
</g>
<!-- src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/cli/defaults.mjs -->
<g id="edge67" class="edge">
<title>src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/cli/defaults.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M488.12,-546.56C637.48,-546.56 1017,-546.56 1017,-546.56 1017,-546.56 1017,-304.3 1017,-304.3"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1019.1,-304.3 1017,-298.3 1014.9,-304.3 1019.1,-304.3"/>
</g>
<!-- src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/utl/object&#45;util.mjs -->
<g id="edge69" class="edge">
<title>src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/utl/object&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M488.11,-551C674.53,-551 1236,-551 1236,-551 1236,-551 1236,-1809.12 1236,-1809.12 1236,-1809.12 1618.94,-1809.12 1618.94,-1809.12"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1618.94,-1811.23 1624.94,-1809.13 1618.94,-1807.03 1618.94,-1811.23"/>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs -->
<g id="node50" class="node">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs</title>
<g id="a_node50"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-depcruise-config/index.mjs" xlink:title="index.mjs">
<path fill="#99ffff" stroke="black" d="M616.21,-651.88C616.21,-651.88 573.04,-651.88 573.04,-651.88 570.08,-651.88 567.12,-648.92 567.12,-645.96 567.12,-645.96 567.12,-640.04 567.12,-640.04 567.12,-637.08 570.08,-634.12 573.04,-634.12 573.04,-634.12 616.21,-634.12 616.21,-634.12 619.17,-634.12 622.12,-637.08 622.12,-640.04 622.12,-640.04 622.12,-645.96 622.12,-645.96 622.12,-648.92 619.17,-651.88 616.21,-651.88"/>
<text xml:space="preserve" text-anchor="start" x="575.12" y="-639.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs -->
<g id="edge68" class="edge">
<title>src/cli/normalize&#45;cli&#45;options.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M487.83,-555.44C535.62,-555.44 595,-555.44 595,-555.44 595,-555.44 595,-624.6 595,-624.6"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="592.9,-624.6 595,-630.6 597.1,-624.6 592.9,-624.6"/>
</g>
<!-- src/main/options/assert&#45;validity.mjs -->
<g id="node135" class="node">
<title>src/main/options/assert&#45;validity.mjs</title>
<g id="a_node135"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/options/assert-validity.mjs" xlink:title="assert&#45;validity.mjs">
<path fill="#ffcccc" stroke="black" d="M918.21,-2371.88C918.21,-2371.88 841.29,-2371.88 841.29,-2371.88 838.33,-2371.88 835.38,-2368.92 835.38,-2365.96 835.38,-2365.96 835.38,-2360.04 835.38,-2360.04 835.38,-2357.08 838.33,-2354.12 841.29,-2354.12 841.29,-2354.12 918.21,-2354.12 918.21,-2354.12 921.17,-2354.12 924.12,-2357.08 924.12,-2360.04 924.12,-2360.04 924.12,-2365.96 924.12,-2365.96 924.12,-2368.92 921.17,-2371.88 918.21,-2371.88"/>
<text xml:space="preserve" text-anchor="start" x="843.38" y="-2359.32" font-family="Helvetica,sans-Serif" font-size="9.00">assert&#45;validity.mjs</text>
</a>
</g>
</g>
<!-- src/main/format.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs -->
<g id="edge237" class="edge">
<title>src/main/format.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M757.62,-2505.68C763.02,-2505.68 767,-2505.68 767,-2505.68 767,-2505.68 767,-2363.12 767,-2363.12 767,-2363.12 826.16,-2363.12 826.16,-2363.12"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="826.16,-2365.23 832.16,-2363.13 826.16,-2361.03 826.16,-2365.23"/>
</g>
<!-- src/main/options/normalize.mjs -->
<g id="node136" class="node">
<title>src/main/options/normalize.mjs</title>
<g id="a_node136"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/options/normalize.mjs" xlink:title="normalize.mjs">
<path fill="#ffcccc" stroke="black" d="M910.33,-2401.88C910.33,-2401.88 849.17,-2401.88 849.17,-2401.88 846.21,-2401.88 843.25,-2398.92 843.25,-2395.96 843.25,-2395.96 843.25,-2390.04 843.25,-2390.04 843.25,-2387.08 846.21,-2384.12 849.17,-2384.12 849.17,-2384.12 910.33,-2384.12 910.33,-2384.12 913.29,-2384.12 916.25,-2387.08 916.25,-2390.04 916.25,-2390.04 916.25,-2395.96 916.25,-2395.96 916.25,-2398.92 913.29,-2401.88 910.33,-2401.88"/>
<text xml:space="preserve" text-anchor="start" x="851.25" y="-2389.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.mjs</text>
</a>
</g>
</g>
<!-- src/main/format.mjs&#45;&gt;src/main/options/normalize.mjs -->
<g id="edge238" class="edge">
<title>src/main/format.mjs&#45;&gt;src/main/options/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M757.38,-2512.78C775.74,-2512.78 796,-2512.78 796,-2512.78 796,-2512.78 796,-2398.44 796,-2398.44 796,-2398.44 833.75,-2398.44 833.75,-2398.44"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="833.75,-2400.54 839.75,-2398.44 833.75,-2396.34 833.75,-2400.54"/>
</g>
<!-- src/main/report&#45;wrap.mjs -->
<g id="node137" class="node">
<title>src/main/report&#45;wrap.mjs</title>
<g id="a_node137"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/report-wrap.mjs" xlink:title="report&#45;wrap.mjs">
<path fill="#ffcccc" stroke="black" d="M913.71,-2476.88C913.71,-2476.88 845.79,-2476.88 845.79,-2476.88 842.83,-2476.88 839.88,-2473.92 839.88,-2470.96 839.88,-2470.96 839.88,-2465.04 839.88,-2465.04 839.88,-2462.08 842.83,-2459.12 845.79,-2459.12 845.79,-2459.12 913.71,-2459.12 913.71,-2459.12 916.67,-2459.12 919.62,-2462.08 919.62,-2465.04 919.62,-2465.04 919.62,-2470.96 919.62,-2470.96 919.62,-2473.92 916.67,-2476.88 913.71,-2476.88"/>
<text xml:space="preserve" text-anchor="start" x="847.88" y="-2464.32" font-family="Helvetica,sans-Serif" font-size="9.00">report&#45;wrap.mjs</text>
</a>
</g>
</g>
<!-- src/main/format.mjs&#45;&gt;src/main/report&#45;wrap.mjs -->
<g id="edge239" class="edge">
<title>src/main/format.mjs&#45;&gt;src/main/report&#45;wrap.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M757.66,-2516.32C792.54,-2516.32 846,-2516.32 846,-2516.32 846,-2516.32 846,-2486.34 846,-2486.34"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="848.1,-2486.34 846,-2480.34 843.9,-2486.34 848.1,-2486.34"/>
</g>
<!-- src/schema/cruise&#45;result.schema.mjs -->
<g id="node140" class="node">
<title>src/schema/cruise&#45;result.schema.mjs</title>
<g id="a_node140"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/cruise-result.schema.mjs" xlink:title="cruise&#45;result.schema.mjs">
<polygon fill="#ffffcc" stroke="black" points="938.38,-2087.88 821.12,-2087.88 821.12,-2070.12 938.38,-2070.12 938.38,-2087.88"/>
<text xml:space="preserve" text-anchor="start" x="829.12" y="-2075.32" font-family="Helvetica,sans-Serif" font-size="9.00">cruise&#45;result.schema.mjs</text>
</a>
</g>
</g>
<!-- src/main/format.mjs&#45;&gt;src/schema/cruise&#45;result.schema.mjs -->
<g id="edge240" class="edge">
<title>src/main/format.mjs&#45;&gt;src/schema/cruise&#45;result.schema.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M757.46,-2509.22C771.79,-2509.22 786,-2509.22 786,-2509.22 786,-2509.22 786,-2079 786,-2079 786,-2079 811.62,-2079 811.62,-2079"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="811.62,-2081.1 817.62,-2079 811.62,-2076.9 811.62,-2081.1"/>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/defaults.mjs -->
<g id="edge48" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/defaults.mjs</title>
<g id="a_edge48"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M420,-208.1C420,-231.23 420,-290.44 420,-290.44 420,-290.44 975.92,-290.44 975.92,-290.44"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="975.92,-292.54 981.92,-290.44 975.92,-288.34 975.92,-292.54"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="610.67" y="-281.89" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/cli/init&#45;config/build&#45;config.mjs -->
<g id="node35" class="node">
<title>src/cli/init&#45;config/build&#45;config.mjs</title>
<g id="a_node35"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/build-config.mjs" xlink:title="build&#45;config.mjs">
<path fill="#ccccff" stroke="black" d="M628.96,-207.88C628.96,-207.88 560.29,-207.88 560.29,-207.88 557.33,-207.88 554.38,-204.92 554.38,-201.96 554.38,-201.96 554.38,-196.04 554.38,-196.04 554.38,-193.08 557.33,-190.12 560.29,-190.12 560.29,-190.12 628.96,-190.12 628.96,-190.12 631.92,-190.12 634.88,-193.08 634.88,-196.04 634.88,-196.04 634.88,-201.96 634.88,-201.96 634.88,-204.92 631.92,-207.88 628.96,-207.88"/>
<text xml:space="preserve" text-anchor="start" x="562.38" y="-195.32" font-family="Helvetica,sans-Serif" font-size="9.00">build&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/build&#45;config.mjs -->
<g id="edge49" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/build&#45;config.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M456.51,-199C456.51,-199 544.99,-199 544.99,-199"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="544.99,-201.1 550.99,-199 544.99,-196.9 544.99,-201.1"/>
</g>
<!-- src/cli/init&#45;config/types.d.ts -->
<g id="node37" class="node">
<title>src/cli/init&#45;config/types.d.ts</title>
<g id="a_node37"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/types.d.ts" xlink:title="types.d.ts">
<path fill="#ccccff" stroke="black" d="M749.46,-177.88C749.46,-177.88 707.04,-177.88 707.04,-177.88 704.08,-177.88 701.12,-174.92 701.12,-171.96 701.12,-171.96 701.12,-166.04 701.12,-166.04 701.12,-163.08 704.08,-160.12 707.04,-160.12 707.04,-160.12 749.46,-160.12 749.46,-160.12 752.42,-160.12 755.38,-163.08 755.38,-166.04 755.38,-166.04 755.38,-171.96 755.38,-171.96 755.38,-174.92 752.42,-177.88 749.46,-177.88"/>
<text xml:space="preserve" text-anchor="start" x="709.12" y="-165.32" font-family="Helvetica,sans-Serif" font-size="9.00">types.d.ts</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts -->
<g id="edge53" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M442,-189.84C442,-181.01 442,-169 442,-169 442,-169 693.29,-169 693.29,-169"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="693.29,-171.1 699.29,-169 693.29,-166.9 693.29,-171.1"/>
</g>
<!-- src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="node39" class="node">
<title>src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<g id="a_node39"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/environment-helpers.mjs" xlink:title="environment&#45;helpers.mjs">
<path fill="#ccccff" stroke="black" d="M932.46,-262.88C932.46,-262.88 827.04,-262.88 827.04,-262.88 824.08,-262.88 821.12,-259.92 821.12,-256.96 821.12,-256.96 821.12,-251.04 821.12,-251.04 821.12,-248.08 824.08,-245.12 827.04,-245.12 827.04,-245.12 932.46,-245.12 932.46,-245.12 935.42,-245.12 938.38,-248.08 938.38,-251.04 938.38,-251.04 938.38,-256.96 938.38,-256.96 938.38,-259.92 935.42,-262.88 932.46,-262.88"/>
<text xml:space="preserve" text-anchor="start" x="829.12" y="-250.32" font-family="Helvetica,sans-Serif" font-size="9.00">environment&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge50" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M438,-208.31C438,-224.7 438,-256.96 438,-256.96 438,-256.96 811.6,-256.96 811.6,-256.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="811.6,-259.06 817.6,-256.96 811.6,-254.86 811.6,-259.06"/>
</g>
<!-- src/cli/init&#45;config/get&#45;user&#45;input.mjs -->
<g id="node42" class="node">
<title>src/cli/init&#45;config/get&#45;user&#45;input.mjs</title>
<g id="a_node42"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/get-user-input.mjs" xlink:title="get&#45;user&#45;input.mjs">
<path fill="#ccccff" stroke="black" d="M633.46,-111.88C633.46,-111.88 555.79,-111.88 555.79,-111.88 552.83,-111.88 549.88,-108.92 549.88,-105.96 549.88,-105.96 549.88,-100.04 549.88,-100.04 549.88,-97.08 552.83,-94.12 555.79,-94.12 555.79,-94.12 633.46,-94.12 633.46,-94.12 636.42,-94.12 639.38,-97.08 639.38,-100.04 639.38,-100.04 639.38,-105.96 639.38,-105.96 639.38,-108.92 636.42,-111.88 633.46,-111.88"/>
<text xml:space="preserve" text-anchor="start" x="557.88" y="-99.33" font-family="Helvetica,sans-Serif" font-size="9.00">get&#45;user&#45;input.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/get&#45;user&#45;input.mjs -->
<g id="edge51" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/get&#45;user&#45;input.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M429,-189.8C429,-165.77 429,-103 429,-103 429,-103 540.78,-103 540.78,-103"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="540.78,-105.1 546.78,-103 540.78,-100.9 540.78,-105.1"/>
</g>
<!-- src/cli/init&#45;config/normalize&#45;init&#45;options.mjs -->
<g id="node45" class="node">
<title>src/cli/init&#45;config/normalize&#45;init&#45;options.mjs</title>
<g id="a_node45"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/normalize-init-options.mjs" xlink:title="normalize&#45;init&#45;options.mjs">
<path fill="#ccccff" stroke="black" d="M649.21,-159.88C649.21,-159.88 540.04,-159.88 540.04,-159.88 537.08,-159.88 534.12,-156.92 534.12,-153.96 534.12,-153.96 534.12,-148.04 534.12,-148.04 534.12,-145.08 537.08,-142.12 540.04,-142.12 540.04,-142.12 649.21,-142.12 649.21,-142.12 652.17,-142.12 655.12,-145.08 655.12,-148.04 655.12,-148.04 655.12,-153.96 655.12,-153.96 655.12,-156.92 652.17,-159.88 649.21,-159.88"/>
<text xml:space="preserve" text-anchor="start" x="542.12" y="-147.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize&#45;init&#45;options.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/normalize&#45;init&#45;options.mjs -->
<g id="edge52" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/normalize&#45;init&#45;options.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M456.65,-194.56C490.76,-194.56 544,-194.56 544,-194.56 544,-194.56 544,-169.27 544,-169.27"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="546.1,-169.27 544,-163.27 541.9,-169.27 546.1,-169.27"/>
</g>
<!-- src/cli/init&#45;config/write&#45;config.mjs -->
<g id="node46" class="node">
<title>src/cli/init&#45;config/write&#45;config.mjs</title>
<g id="a_node46"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/write-config.mjs" xlink:title="write&#45;config.mjs">
<path fill="#ccccff" stroke="black" d="M628.58,-78.88C628.58,-78.88 560.67,-78.88 560.67,-78.88 557.71,-78.88 554.75,-75.92 554.75,-72.96 554.75,-72.96 554.75,-67.04 554.75,-67.04 554.75,-64.08 557.71,-61.12 560.67,-61.12 560.67,-61.12 628.58,-61.12 628.58,-61.12 631.54,-61.12 634.5,-64.08 634.5,-67.04 634.5,-67.04 634.5,-72.96 634.5,-72.96 634.5,-75.92 631.54,-78.88 628.58,-78.88"/>
<text xml:space="preserve" text-anchor="start" x="562.75" y="-66.33" font-family="Helvetica,sans-Serif" font-size="9.00">write&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/write&#45;config.mjs -->
<g id="edge54" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/write&#45;config.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M415,-189.72C415,-160.14 415,-70 415,-70 415,-70 545.29,-70 545.29,-70"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="545.29,-72.1 551.29,-70 545.29,-67.9 545.29,-72.1"/>
</g>
<!-- src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs -->
<g id="node47" class="node">
<title>src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs</title>
<g id="a_node47"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/write-run-scripts-to-manifest.mjs" xlink:title="write&#45;run&#45;scripts&#45;to&#45;manifest.mjs">
<path fill="#ccccff" stroke="black" d="M661.58,-237.88C661.58,-237.88 527.67,-237.88 527.67,-237.88 524.71,-237.88 521.75,-234.92 521.75,-231.96 521.75,-231.96 521.75,-226.04 521.75,-226.04 521.75,-223.08 524.71,-220.12 527.67,-220.12 527.67,-220.12 661.58,-220.12 661.58,-220.12 664.54,-220.12 667.5,-223.08 667.5,-226.04 667.5,-226.04 667.5,-231.96 667.5,-231.96 667.5,-234.92 664.54,-237.88 661.58,-237.88"/>
<text xml:space="preserve" text-anchor="start" x="529.75" y="-225.32" font-family="Helvetica,sans-Serif" font-size="9.00">write&#45;run&#45;scripts&#45;to&#45;manifest.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs -->
<g id="edge55" class="edge">
<title>src/cli/init&#45;config/index.mjs&#45;&gt;src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M456.66,-203.44C486.02,-203.44 528,-203.44 528,-203.44 528,-203.44 528,-210.74 528,-210.74"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="525.9,-210.74 528,-216.74 530.1,-210.74 525.9,-210.74"/>
</g>
<!-- src/cli/listeners/performance&#45;log/handlers.mjs -->
<g id="node49" class="node">
<title>src/cli/listeners/performance&#45;log/handlers.mjs</title>
<g id="a_node49"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/listeners/performance-log/handlers.mjs" xlink:title="handlers.mjs">
<path fill="#ccccff" stroke="black" d="M622.96,-335.88C622.96,-335.88 566.29,-335.88 566.29,-335.88 563.33,-335.88 560.38,-332.92 560.38,-329.96 560.38,-329.96 560.38,-324.04 560.38,-324.04 560.38,-321.08 563.33,-318.12 566.29,-318.12 566.29,-318.12 622.96,-318.12 622.96,-318.12 625.92,-318.12 628.88,-321.08 628.88,-324.04 628.88,-324.04 628.88,-329.96 628.88,-329.96 628.88,-332.92 625.92,-335.88 622.96,-335.88"/>
<text xml:space="preserve" text-anchor="start" x="568.38" y="-323.32" font-family="Helvetica,sans-Serif" font-size="9.00">handlers.mjs</text>
</a>
</g>
</g>
<!-- src/cli/listeners/performance&#45;log/index.mjs&#45;&gt;src/cli/listeners/performance&#45;log/handlers.mjs -->
<g id="edge66" class="edge">
<title>src/cli/listeners/performance&#45;log/index.mjs&#45;&gt;src/cli/listeners/performance&#45;log/handlers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M456.51,-327C456.51,-327 551.12,-327 551.12,-327"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="551.12,-329.1 557.12,-327 551.12,-324.9 551.12,-329.1"/>
</g>
<!-- src/config&#45;utl/make&#45;absolute.mjs -->
<g id="node52" class="node">
<title>src/config&#45;utl/make&#45;absolute.mjs</title>
<g id="a_node52"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/make-absolute.mjs" xlink:title="make&#45;absolute.mjs">
<path fill="#99ffff" stroke="black" d="M635.33,-733.88C635.33,-733.88 553.92,-733.88 553.92,-733.88 550.96,-733.88 548,-730.92 548,-727.96 548,-727.96 548,-722.04 548,-722.04 548,-719.08 550.96,-716.12 553.92,-716.12 553.92,-716.12 635.33,-716.12 635.33,-716.12 638.29,-716.12 641.25,-719.08 641.25,-722.04 641.25,-722.04 641.25,-727.96 641.25,-727.96 641.25,-730.92 638.29,-733.88 635.33,-733.88"/>
<text xml:space="preserve" text-anchor="start" x="556" y="-721.33" font-family="Helvetica,sans-Serif" font-size="9.00">make&#45;absolute.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;babel&#45;config.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs -->
<g id="edge71" class="edge">
<title>src/config&#45;utl/extract&#45;babel&#45;config.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M481,-745.84C481,-738 481,-727.96 481,-727.96 481,-727.96 538.73,-727.96 538.73,-727.96"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="538.73,-730.06 544.73,-727.96 538.73,-725.86 538.73,-730.06"/>
</g>
<!-- src/utl/try&#45;import.mjs -->
<g id="node53" class="node">
<title>src/utl/try&#45;import.mjs</title>
<g id="a_node53"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/try-import.mjs" xlink:title="try&#45;import.mjs">
<path fill="#cccccc" stroke="black" d="M1693.96,-1701.88C1693.96,-1701.88 1635.04,-1701.88 1635.04,-1701.88 1632.08,-1701.88 1629.12,-1698.92 1629.12,-1695.96 1629.12,-1695.96 1629.12,-1690.04 1629.12,-1690.04 1629.12,-1687.08 1632.08,-1684.12 1635.04,-1684.12 1635.04,-1684.12 1693.96,-1684.12 1693.96,-1684.12 1696.92,-1684.12 1699.88,-1687.08 1699.88,-1690.04 1699.88,-1690.04 1699.88,-1695.96 1699.88,-1695.96 1699.88,-1698.92 1696.92,-1701.88 1693.96,-1701.88"/>
<text xml:space="preserve" text-anchor="start" x="1637.12" y="-1689.33" font-family="Helvetica,sans-Serif" font-size="9.00">try&#45;import.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;babel&#45;config.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge72" class="edge">
<title>src/config&#45;utl/extract&#45;babel&#45;config.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M471,-764.16C471,-860.23 471,-1680.04 471,-1680.04 471,-1680.04 1653,-1680.04 1653,-1680.04 1653,-1680.04 1653,-1680.42 1653,-1680.42"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1650.9,-1674.83 1653,-1680.83 1655.1,-1674.83 1650.9,-1674.83"/>
</g>
<!-- src/config&#45;utl/extract&#45;known&#45;violations.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs -->
<g id="edge79" class="edge">
<title>src/config&#45;utl/extract&#45;known&#45;violations.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M494.98,-667.38C525.9,-667.38 556,-667.38 556,-667.38 556,-667.38 556,-706.71 556,-706.71"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="553.9,-706.71 556,-712.71 558.1,-706.71 553.9,-706.71"/>
</g>
<!-- src/config&#45;utl/extract&#45;ts&#45;config.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge80" class="edge">
<title>src/config&#45;utl/extract&#45;ts&#45;config.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M477.62,-722.04C488.56,-722.04 497,-722.04 497,-722.04 497,-722.04 497,-1675.96 497,-1675.96 497,-1675.96 1676,-1675.96 1676,-1675.96 1676,-1675.96 1676,-1676.73 1676,-1676.73"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1673.9,-1674.65 1676,-1680.65 1678.1,-1674.65 1673.9,-1674.65"/>
</g>
<!-- src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs -->
<g id="edge81" class="edge">
<title>src/config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.mjs&#45;&gt;src/config&#45;utl/make&#45;absolute.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M509.24,-695C532.63,-695 552,-695 552,-695 552,-695 552,-706.81 552,-706.81"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="549.9,-706.81 552,-712.81 554.1,-706.81 549.9,-706.81"/>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/cache/cache.mjs -->
<g id="edge234" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/cache/cache.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.200000" d="M585,-2387.99C585,-2312.86 585,-1793 585,-1793 585,-1793 979.42,-1793 979.42,-1793"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="979.42,-1795.1 985.42,-1793 979.42,-1790.9 979.42,-1795.1"/>
</g>
<!-- src/main/resolve&#45;options/normalize.mjs -->
<g id="node57" class="node">
<title>src/main/resolve&#45;options/normalize.mjs</title>
<g id="a_node57"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/resolve-options/normalize.mjs" xlink:title="normalize.mjs">
<path fill="#ffcccc" stroke="black" d="M758.83,-2293.88C758.83,-2293.88 697.67,-2293.88 697.67,-2293.88 694.71,-2293.88 691.75,-2290.92 691.75,-2287.96 691.75,-2287.96 691.75,-2282.04 691.75,-2282.04 691.75,-2279.08 694.71,-2276.12 697.67,-2276.12 697.67,-2276.12 758.83,-2276.12 758.83,-2276.12 761.79,-2276.12 764.75,-2279.08 764.75,-2282.04 764.75,-2282.04 764.75,-2287.96 764.75,-2287.96 764.75,-2290.92 761.79,-2293.88 758.83,-2293.88"/>
<text xml:space="preserve" text-anchor="start" x="699.75" y="-2281.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/resolve&#45;options/normalize.mjs -->
<g id="edge231" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/resolve&#45;options/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M595,-2387.7C595,-2361.33 595,-2287.96 595,-2287.96 595,-2287.96 682.46,-2287.96 682.46,-2287.96"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="682.46,-2290.06 688.46,-2287.96 682.46,-2285.86 682.46,-2290.06"/>
</g>
<!-- src/enrich/index.mjs -->
<g id="node75" class="node">
<title>src/enrich/index.mjs</title>
<g id="a_node75"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/index.mjs" xlink:title="index.mjs">
<path fill="#77eeaa" stroke="black" d="M901.33,-2754.88C901.33,-2754.88 858.17,-2754.88 858.17,-2754.88 855.21,-2754.88 852.25,-2751.92 852.25,-2748.96 852.25,-2748.96 852.25,-2743.04 852.25,-2743.04 852.25,-2740.08 855.21,-2737.12 858.17,-2737.12 858.17,-2737.12 901.33,-2737.12 901.33,-2737.12 904.29,-2737.12 907.25,-2740.08 907.25,-2743.04 907.25,-2743.04 907.25,-2748.96 907.25,-2748.96 907.25,-2751.92 904.29,-2754.88 901.33,-2754.88"/>
<text xml:space="preserve" text-anchor="start" x="860.25" y="-2742.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/enrich/index.mjs -->
<g id="edge235" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/enrich/index.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M580,-2406.33C580,-2461.84 580,-2746 580,-2746 580,-2746 842.79,-2746 842.79,-2746"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="842.79,-2748.1 848.79,-2746 842.79,-2743.9 842.79,-2748.1"/>
</g>
<!-- src/extract/index.mjs -->
<g id="node106" class="node">
<title>src/extract/index.mjs</title>
<g id="a_node106"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/index.mjs" xlink:title="index.mjs">
<path fill="#ccffcc" stroke="black" d="M749.83,-1237.88C749.83,-1237.88 706.67,-1237.88 706.67,-1237.88 703.71,-1237.88 700.75,-1234.92 700.75,-1231.96 700.75,-1231.96 700.75,-1226.04 700.75,-1226.04 700.75,-1223.08 703.71,-1220.12 706.67,-1220.12 706.67,-1220.12 749.83,-1220.12 749.83,-1220.12 752.79,-1220.12 755.75,-1223.08 755.75,-1226.04 755.75,-1226.04 755.75,-1231.96 755.75,-1231.96 755.75,-1234.92 752.79,-1237.88 749.83,-1237.88"/>
<text xml:space="preserve" text-anchor="start" x="708.75" y="-1225.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/extract/index.mjs -->
<g id="edge236" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/extract/index.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M576,-2387.94C576,-2279.22 576,-1229 576,-1229 576,-1229 691.3,-1229 691.3,-1229"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="691.3,-1231.1 697.3,-1229 691.3,-1226.9 691.3,-1231.1"/>
</g>
<!-- src/main/files&#45;and&#45;dirs/normalize.mjs -->
<g id="node134" class="node">
<title>src/main/files&#45;and&#45;dirs/normalize.mjs</title>
<g id="a_node134"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/files-and-dirs/normalize.mjs" xlink:title="normalize.mjs">
<path fill="#ffcccc" stroke="black" d="M758.83,-2467.88C758.83,-2467.88 697.67,-2467.88 697.67,-2467.88 694.71,-2467.88 691.75,-2464.92 691.75,-2461.96 691.75,-2461.96 691.75,-2456.04 691.75,-2456.04 691.75,-2453.08 694.71,-2450.12 697.67,-2450.12 697.67,-2450.12 758.83,-2450.12 758.83,-2450.12 761.79,-2450.12 764.75,-2453.08 764.75,-2456.04 764.75,-2456.04 764.75,-2461.96 764.75,-2461.96 764.75,-2464.92 761.79,-2467.88 758.83,-2467.88"/>
<text xml:space="preserve" text-anchor="start" x="699.75" y="-2455.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/files&#45;and&#45;dirs/normalize.mjs -->
<g id="edge227" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/files&#45;and&#45;dirs/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M609,-2406.15C609,-2423.39 609,-2459 609,-2459 609,-2459 682.47,-2459 682.47,-2459"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="682.47,-2461.1 688.47,-2459 682.47,-2456.9 682.47,-2461.1"/>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs -->
<g id="edge228" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M604,-2387.69C604,-2376.77 604,-2360.12 604,-2360.12 604,-2360.12 826.11,-2360.12 826.11,-2360.12"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="826.11,-2362.23 832.11,-2360.13 826.11,-2358.03 826.11,-2362.23"/>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/options/normalize.mjs -->
<g id="edge229" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/options/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M623.53,-2395C623.53,-2395 834.15,-2395 834.15,-2395"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="834.15,-2397.1 840.15,-2395 834.15,-2392.9 834.15,-2397.1"/>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/report&#45;wrap.mjs -->
<g id="edge230" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/report&#45;wrap.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M595,-2406.24C595,-2426.37 595,-2472.38 595,-2472.38 595,-2472.38 830.53,-2472.38 830.53,-2472.38"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="830.53,-2474.48 836.53,-2472.38 830.53,-2470.28 830.53,-2474.48"/>
</g>
<!-- src/main/rule&#45;set/assert&#45;validity.mjs -->
<g id="node138" class="node">
<title>src/main/rule&#45;set/assert&#45;validity.mjs</title>
<g id="a_node138"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/rule-set/assert-validity.mjs" xlink:title="assert&#45;validity.mjs">
<path fill="#ffcccc" stroke="black" d="M766.71,-2353.88C766.71,-2353.88 689.79,-2353.88 689.79,-2353.88 686.83,-2353.88 683.88,-2350.92 683.88,-2347.96 683.88,-2347.96 683.88,-2342.04 683.88,-2342.04 683.88,-2339.08 686.83,-2336.12 689.79,-2336.12 689.79,-2336.12 766.71,-2336.12 766.71,-2336.12 769.67,-2336.12 772.62,-2339.08 772.62,-2342.04 772.62,-2342.04 772.62,-2347.96 772.62,-2347.96 772.62,-2350.92 769.67,-2353.88 766.71,-2353.88"/>
<text xml:space="preserve" text-anchor="start" x="691.88" y="-2341.32" font-family="Helvetica,sans-Serif" font-size="9.00">assert&#45;validity.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/rule&#45;set/assert&#45;validity.mjs -->
<g id="edge232" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/rule&#45;set/assert&#45;validity.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M623.66,-2391.56C651.07,-2391.56 688,-2391.56 688,-2391.56 688,-2391.56 688,-2363 688,-2363"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="690.1,-2363 688,-2357 685.9,-2363 690.1,-2363"/>
</g>
<!-- src/main/rule&#45;set/normalize.mjs -->
<g id="node139" class="node">
<title>src/main/rule&#45;set/normalize.mjs</title>
<g id="a_node139"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/rule-set/normalize.mjs" xlink:title="normalize.mjs">
<path fill="#ffcccc" stroke="black" d="M758.83,-2383.88C758.83,-2383.88 697.67,-2383.88 697.67,-2383.88 694.71,-2383.88 691.75,-2380.92 691.75,-2377.96 691.75,-2377.96 691.75,-2372.04 691.75,-2372.04 691.75,-2369.08 694.71,-2366.12 697.67,-2366.12 697.67,-2366.12 758.83,-2366.12 758.83,-2366.12 761.79,-2366.12 764.75,-2369.08 764.75,-2372.04 764.75,-2372.04 764.75,-2377.96 764.75,-2377.96 764.75,-2380.92 761.79,-2383.88 758.83,-2383.88"/>
<text xml:space="preserve" text-anchor="start" x="699.75" y="-2371.32" font-family="Helvetica,sans-Serif" font-size="9.00">normalize.mjs</text>
</a>
</g>
</g>
<!-- src/main/cruise.mjs&#45;&gt;src/main/rule&#45;set/normalize.mjs -->
<g id="edge233" class="edge">
<title>src/main/cruise.mjs&#45;&gt;src/main/rule&#45;set/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-dasharray="5,2" stroke-opacity="0.466667" d="M614,-2387.8C614,-2381.77 614,-2375 614,-2375 614,-2375 682.44,-2375 682.44,-2375"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="682.44,-2377.1 688.44,-2375 682.44,-2372.9 682.44,-2377.1"/>
</g>
<!-- src/cli/init&#45;config/config&#45;template.mjs -->
<g id="node36" class="node">
<title>src/cli/init&#45;config/config&#45;template.mjs</title>
<g id="a_node36"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/config-template.mjs" xlink:title="config&#45;template.mjs">
<path fill="#ccccff" stroke="black" d="M770.08,-207.88C770.08,-207.88 686.42,-207.88 686.42,-207.88 683.46,-207.88 680.5,-204.92 680.5,-201.96 680.5,-201.96 680.5,-196.04 680.5,-196.04 680.5,-193.08 683.46,-190.12 686.42,-190.12 686.42,-190.12 770.08,-190.12 770.08,-190.12 773.04,-190.12 776,-193.08 776,-196.04 776,-196.04 776,-201.96 776,-201.96 776,-204.92 773.04,-207.88 770.08,-207.88"/>
<text xml:space="preserve" text-anchor="start" x="688.5" y="-195.32" font-family="Helvetica,sans-Serif" font-size="9.00">config&#45;template.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/config&#45;template.mjs -->
<g id="edge37" class="edge">
<title>src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/config&#45;template.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M635.08,-196.04C635.08,-196.04 671.38,-196.04 671.38,-196.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="671.38,-198.14 677.38,-196.04 671.38,-193.94 671.38,-198.14"/>
</g>
<!-- src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts -->
<g id="edge38" class="edge">
<title>src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M595,-189.84C595,-182 595,-171.96 595,-171.96 595,-171.96 693.13,-171.96 693.13,-171.96"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="693.13,-174.06 699.13,-171.96 693.13,-169.86 693.13,-174.06"/>
</g>
<!-- src/cli/init&#45;config/utl.mjs -->
<g id="node38" class="node">
<title>src/cli/init&#45;config/utl.mjs</title>
<g id="a_node38"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/utl.mjs" xlink:title="utl.mjs">
<path fill="#ccccff" stroke="black" d="M749.33,-237.88C749.33,-237.88 707.17,-237.88 707.17,-237.88 704.21,-237.88 701.25,-234.92 701.25,-231.96 701.25,-231.96 701.25,-226.04 701.25,-226.04 701.25,-223.08 704.21,-220.12 707.17,-220.12 707.17,-220.12 749.33,-220.12 749.33,-220.12 752.29,-220.12 755.25,-223.08 755.25,-226.04 755.25,-226.04 755.25,-231.96 755.25,-231.96 755.25,-234.92 752.29,-237.88 749.33,-237.88"/>
<text xml:space="preserve" text-anchor="start" x="715.12" y="-225.32" font-family="Helvetica,sans-Serif" font-size="9.00">utl.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/utl.mjs -->
<g id="edge39" class="edge">
<title>src/cli/init&#45;config/build&#45;config.mjs&#45;&gt;src/cli/init&#45;config/utl.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M635.34,-201.96C656.5,-201.96 678,-201.96 678,-201.96 678,-201.96 678,-226.04 678,-226.04 678,-226.04 691.75,-226.04 691.75,-226.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="691.75,-228.14 697.75,-226.04 691.75,-223.94 691.75,-228.14"/>
</g>
<!-- src/cli/init&#45;config/environment&#45;helpers.mjs&#45;&gt;src/cli/defaults.mjs -->
<g id="edge40" class="edge">
<title>src/cli/init&#45;config/environment&#45;helpers.mjs&#45;&gt;src/cli/defaults.mjs</title>
<g id="a_edge40"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M935,-263.33C935,-271.33 935,-281.56 935,-281.56 935,-281.56 975.87,-281.56 975.87,-281.56"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="975.87,-283.66 981.87,-281.56 975.87,-279.46 975.87,-283.66"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="900.19" y="-273.01" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/cli/init&#45;config/find&#45;extensions.mjs -->
<g id="node40" class="node">
<title>src/cli/init&#45;config/find&#45;extensions.mjs</title>
<g id="a_node40"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/find-extensions.mjs" xlink:title="find&#45;extensions.mjs">
<path fill="#ccccff" stroke="black" d="M769.71,-133.88C769.71,-133.88 686.79,-133.88 686.79,-133.88 683.83,-133.88 680.88,-130.92 680.88,-127.96 680.88,-127.96 680.88,-122.04 680.88,-122.04 680.88,-119.08 683.83,-116.12 686.79,-116.12 686.79,-116.12 769.71,-116.12 769.71,-116.12 772.67,-116.12 775.62,-119.08 775.62,-122.04 775.62,-122.04 775.62,-127.96 775.62,-127.96 775.62,-130.92 772.67,-133.88 769.71,-133.88"/>
<text xml:space="preserve" text-anchor="start" x="688.88" y="-121.33" font-family="Helvetica,sans-Serif" font-size="9.00">find&#45;extensions.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/extract/transpile/meta.mjs -->
<g id="edge41" class="edge">
<title>src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/extract/transpile/meta.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M775.84,-120.56C902.64,-120.56 1239,-120.56 1239,-120.56 1239,-120.56 1239,-1417.08 1239,-1417.08 1239,-1417.08 1285.96,-1417.08 1285.96,-1417.08"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.96,-1419.18 1291.96,-1417.08 1285.96,-1414.98 1285.96,-1419.18"/>
</g>
<!-- src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/utl/find&#45;all&#45;files.mjs -->
<g id="edge42" class="edge">
<title>src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/utl/find&#45;all&#45;files.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M775.99,-129.44C842.78,-129.44 956,-129.44 956,-129.44 956,-129.44 956,-1750.04 956,-1750.04 956,-1750.04 1615.35,-1750.04 1615.35,-1750.04"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1615.35,-1752.14 1621.35,-1750.04 1615.35,-1747.94 1615.35,-1752.14"/>
</g>
<!-- src/utl/get&#45;extension.mjs -->
<g id="node41" class="node">
<title>src/utl/get&#45;extension.mjs</title>
<g id="a_node41"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/get-extension.mjs" xlink:title="get&#45;extension.mjs">
<path fill="#cccccc" stroke="black" d="M1702.58,-1731.88C1702.58,-1731.88 1626.42,-1731.88 1626.42,-1731.88 1623.46,-1731.88 1620.5,-1728.92 1620.5,-1725.96 1620.5,-1725.96 1620.5,-1720.04 1620.5,-1720.04 1620.5,-1717.08 1623.46,-1714.12 1626.42,-1714.12 1626.42,-1714.12 1702.58,-1714.12 1702.58,-1714.12 1705.54,-1714.12 1708.5,-1717.08 1708.5,-1720.04 1708.5,-1720.04 1708.5,-1725.96 1708.5,-1725.96 1708.5,-1728.92 1705.54,-1731.88 1702.58,-1731.88"/>
<text xml:space="preserve" text-anchor="start" x="1628.5" y="-1719.33" font-family="Helvetica,sans-Serif" font-size="9.00">get&#45;extension.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/utl/get&#45;extension.mjs -->
<g id="edge43" class="edge">
<title>src/cli/init&#45;config/find&#45;extensions.mjs&#45;&gt;src/utl/get&#45;extension.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M775.85,-125C843.15,-125 958,-125 958,-125 958,-125 958,-1728.92 958,-1728.92 958,-1728.92 1611.01,-1728.92 1611.01,-1728.92"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1611.01,-1731.02 1617.01,-1728.92 1611.01,-1726.82 1611.01,-1731.02"/>
</g>
<!-- src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts -->
<g id="edge45" class="edge">
<title>src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M639.51,-108.33C657.92,-108.33 675,-108.33 675,-108.33 675,-108.33 675,-163.08 675,-163.08 675,-163.08 693.18,-163.08 693.18,-163.08"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="693.18,-165.18 699.18,-163.08 693.18,-160.98 693.18,-165.18"/>
</g>
<!-- src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge44" class="edge">
<title>src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M639.77,-104.78C717.41,-104.78 868,-104.78 868,-104.78 868,-104.78 868,-235.64 868,-235.64"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="865.9,-235.64 868,-241.64 870.1,-235.64 865.9,-235.64"/>
</g>
<!-- src/cli/init&#45;config/validators.mjs -->
<g id="node43" class="node">
<title>src/cli/init&#45;config/validators.mjs</title>
<g id="a_node43"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/init-config/validators.mjs" xlink:title="validators.mjs">
<path fill="#ccccff" stroke="black" d="M758.46,-89.88C758.46,-89.88 698.04,-89.88 698.04,-89.88 695.08,-89.88 692.12,-86.92 692.12,-83.96 692.12,-83.96 692.12,-78.04 692.12,-78.04 692.12,-75.08 695.08,-72.12 698.04,-72.12 698.04,-72.12 758.46,-72.12 758.46,-72.12 761.42,-72.12 764.38,-75.08 764.38,-78.04 764.38,-78.04 764.38,-83.96 764.38,-83.96 764.38,-86.92 761.42,-89.88 758.46,-89.88"/>
<text xml:space="preserve" text-anchor="start" x="700.12" y="-77.33" font-family="Helvetica,sans-Serif" font-size="9.00">validators.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/validators.mjs -->
<g id="edge46" class="edge">
<title>src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/cli/init&#45;config/validators.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M639.78,-97.67C678.47,-97.67 728,-97.67 728,-97.67 728,-97.67 728,-96.92 728,-96.92"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="730.1,-99.15 728,-93.15 725.9,-99.15 730.1,-99.15"/>
</g>
<!-- src/extract/tsc/parse.mjs -->
<g id="node44" class="node">
<title>src/extract/tsc/parse.mjs</title>
<g id="a_node44"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/tsc/parse.mjs" xlink:title="parse.mjs">
<path fill="#ccffcc" stroke="black" d="M1176.83,-1237.88C1176.83,-1237.88 1132.92,-1237.88 1132.92,-1237.88 1129.96,-1237.88 1127,-1234.92 1127,-1231.96 1127,-1231.96 1127,-1226.04 1127,-1226.04 1127,-1223.08 1129.96,-1220.12 1132.92,-1220.12 1132.92,-1220.12 1176.83,-1220.12 1176.83,-1220.12 1179.79,-1220.12 1182.75,-1223.08 1182.75,-1226.04 1182.75,-1226.04 1182.75,-1231.96 1182.75,-1231.96 1182.75,-1234.92 1179.79,-1237.88 1176.83,-1237.88"/>
<text xml:space="preserve" text-anchor="start" x="1135" y="-1225.33" font-family="Helvetica,sans-Serif" font-size="9.00">parse.mjs</text>
</a>
</g>
</g>
<!-- src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/extract/tsc/parse.mjs -->
<g id="edge47" class="edge">
<title>src/cli/init&#45;config/get&#45;user&#45;input.mjs&#45;&gt;src/extract/tsc/parse.mjs</title>
<g id="a_edge47"><a xlink:title="cli&#45;to&#45;main&#45;only">
<path fill="none" stroke="red" stroke-width="2" d="M639.87,-101.22C758.78,-101.22 1071,-101.22 1071,-101.22 1071,-101.22 1071,-1223.08 1071,-1223.08 1071,-1223.08 1117.92,-1223.08 1117.92,-1223.08"/>
<polygon fill="red" stroke="red" stroke-width="2" points="1117.92,-1225.18 1123.92,-1223.08 1117.92,-1220.98 1117.92,-1225.18"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1039.5" y="-461.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="red">cli&#45;to&#45;main&#45;only</text>
</g>
<!-- src/cli/init&#45;config/validators.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge59" class="edge">
<title>src/cli/init&#45;config/validators.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M764.77,-81C812.76,-81 891,-81 891,-81 891,-81 891,-235.67 891,-235.67"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="888.9,-235.67 891,-241.67 893.1,-235.67 888.9,-235.67"/>
</g>
<!-- src/extract/tsc/parse.mjs&#45;&gt;src/utl/get&#45;extension.mjs -->
<g id="edge212" class="edge">
<title>src/extract/tsc/parse.mjs&#45;&gt;src/utl/get&#45;extension.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1183.11,-1227.12C1275.21,-1227.12 1561,-1227.12 1561,-1227.12 1561,-1227.12 1561,-1720.04 1561,-1720.04 1561,-1720.04 1610.98,-1720.04 1610.98,-1720.04"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1610.98,-1722.14 1616.98,-1720.04 1610.98,-1717.94 1610.98,-1722.14"/>
</g>
<!-- src/extract/tsc/parse.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge213" class="edge">
<title>src/extract/tsc/parse.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1183.03,-1223.62C1278.5,-1223.62 1584,-1223.62 1584,-1223.62 1584,-1223.62 1584,-1686.1 1584,-1686.1 1584,-1686.1 1619.93,-1686.1 1619.93,-1686.1"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.93,-1688.2 1625.93,-1686.1 1619.93,-1684 1619.93,-1688.2"/>
</g>
<!-- src/extract/transpile/index.mjs -->
<g id="node92" class="node">
<title>src/extract/transpile/index.mjs</title>
<g id="a_node92"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/index.mjs" xlink:title="index.mjs">
<path fill="#ccffcc" stroke="black" d="M1343.83,-1401.88C1343.83,-1401.88 1300.67,-1401.88 1300.67,-1401.88 1297.71,-1401.88 1294.75,-1398.92 1294.75,-1395.96 1294.75,-1395.96 1294.75,-1390.04 1294.75,-1390.04 1294.75,-1387.08 1297.71,-1384.12 1300.67,-1384.12 1300.67,-1384.12 1343.83,-1384.12 1343.83,-1384.12 1346.79,-1384.12 1349.75,-1387.08 1349.75,-1390.04 1349.75,-1390.04 1349.75,-1395.96 1349.75,-1395.96 1349.75,-1398.92 1346.79,-1401.88 1343.83,-1401.88"/>
<text xml:space="preserve" text-anchor="start" x="1302.75" y="-1389.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/extract/tsc/parse.mjs&#45;&gt;src/extract/transpile/index.mjs -->
<g id="edge211" class="edge">
<title>src/extract/tsc/parse.mjs&#45;&gt;src/extract/transpile/index.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1182.94,-1230.62C1203.56,-1230.62 1228,-1230.62 1228,-1230.62 1228,-1230.62 1228,-1395.96 1228,-1395.96 1228,-1395.96 1285.45,-1395.96 1285.45,-1395.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.45,-1398.06 1291.45,-1395.96 1285.45,-1393.86 1285.45,-1398.06"/>
</g>
<!-- src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts -->
<g id="edge58" class="edge">
<title>src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M645,-160.27C645,-163.36 645,-166.04 645,-166.04 645,-166.04 693.48,-166.04 693.48,-166.04"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="693.48,-168.14 699.48,-166.04 693.48,-163.94 693.48,-168.14"/>
</g>
<!-- src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge56" class="edge">
<title>src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M655.55,-151C729.67,-151 845,-151 845,-151 845,-151 845,-235.83 845,-235.83"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="842.9,-235.83 845,-241.83 847.1,-235.83 842.9,-235.83"/>
</g>
<!-- src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/find&#45;extensions.mjs -->
<g id="edge57" class="edge">
<title>src/cli/init&#45;config/normalize&#45;init&#45;options.mjs&#45;&gt;src/cli/init&#45;config/find&#45;extensions.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M647,-141.91C647,-134.41 647,-125 647,-125 647,-125 671.49,-125 671.49,-125"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="671.49,-127.1 677.49,-125 671.49,-122.9 671.49,-127.1"/>
</g>
<!-- src/cli/init&#45;config/write&#45;config.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge60" class="edge">
<title>src/cli/init&#45;config/write&#45;config.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M634.88,-66.62C720.92,-66.62 915,-66.62 915,-66.62 915,-66.62 915,-235.68 915,-235.68"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="912.9,-235.68 915,-241.68 917.1,-235.68 912.9,-235.68"/>
</g>
<!-- src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/defaults.mjs -->
<g id="edge61" class="edge">
<title>src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/defaults.mjs</title>
<g id="a_edge61"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M654,-238.16C654,-254.27 654,-286 654,-286 654,-286 975.89,-286 975.89,-286"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="975.89,-288.1 981.89,-286 975.89,-283.9 975.89,-288.1"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="744.9" y="-277.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts -->
<g id="edge63" class="edge">
<title>src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/types.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M661,-220.07C661,-204.71 661,-174.92 661,-174.92 661,-174.92 693.38,-174.92 693.38,-174.92"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="693.38,-177.02 699.38,-174.92 693.38,-172.82 693.38,-177.02"/>
</g>
<!-- src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/utl.mjs -->
<g id="edge64" class="edge">
<title>src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/utl.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M667.69,-231.96C667.69,-231.96 691.84,-231.96 691.84,-231.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="691.84,-234.06 697.84,-231.96 691.84,-229.86 691.84,-234.06"/>
</g>
<!-- src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs -->
<g id="edge62" class="edge">
<title>src/cli/init&#45;config/write&#45;run&#45;scripts&#45;to&#45;manifest.mjs&#45;&gt;src/cli/init&#45;config/environment&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M661,-238.22C661,-244.26 661,-251.04 661,-251.04 661,-251.04 811.81,-251.04 811.81,-251.04"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="811.81,-253.14 817.81,-251.04 811.81,-248.94 811.81,-253.14"/>
</g>
<!-- src/cli/listeners/performance&#45;log/format&#45;helpers.mjs -->
<g id="node48" class="node">
<title>src/cli/listeners/performance&#45;log/format&#45;helpers.mjs</title>
<g id="a_node48"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/cli/listeners/performance-log/format-helpers.mjs" xlink:title="format&#45;helpers.mjs">
<path fill="#ccccff" stroke="black" d="M768.21,-335.88C768.21,-335.88 688.29,-335.88 688.29,-335.88 685.33,-335.88 682.38,-332.92 682.38,-329.96 682.38,-329.96 682.38,-324.04 682.38,-324.04 682.38,-321.08 685.33,-318.12 688.29,-318.12 688.29,-318.12 768.21,-318.12 768.21,-318.12 771.17,-318.12 774.12,-321.08 774.12,-324.04 774.12,-324.04 774.12,-329.96 774.12,-329.96 774.12,-332.92 771.17,-335.88 768.21,-335.88"/>
<text xml:space="preserve" text-anchor="start" x="690.38" y="-323.32" font-family="Helvetica,sans-Serif" font-size="9.00">format&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/cli/listeners/performance&#45;log/handlers.mjs&#45;&gt;src/cli/listeners/performance&#45;log/format&#45;helpers.mjs -->
<g id="edge65" class="edge">
<title>src/cli/listeners/performance&#45;log/handlers.mjs&#45;&gt;src/cli/listeners/performance&#45;log/format&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M629.04,-327C629.04,-327 673.34,-327 673.34,-327"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="673.34,-329.1 679.34,-327 673.34,-324.9 673.34,-329.1"/>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs -->
<g id="node54" class="node">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs</title>
<g id="a_node54"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-depcruise-config/merge-configs.mjs" xlink:title="merge&#45;configs.mjs">
<path fill="#99ffff" stroke="black" d="M767.83,-681.88C767.83,-681.88 688.67,-681.88 688.67,-681.88 685.71,-681.88 682.75,-678.92 682.75,-675.96 682.75,-675.96 682.75,-670.04 682.75,-670.04 682.75,-667.08 685.71,-664.12 688.67,-664.12 688.67,-664.12 767.83,-664.12 767.83,-664.12 770.79,-664.12 773.75,-667.08 773.75,-670.04 773.75,-670.04 773.75,-675.96 773.75,-675.96 773.75,-678.92 770.79,-681.88 767.83,-681.88"/>
<text xml:space="preserve" text-anchor="start" x="690.75" y="-669.33" font-family="Helvetica,sans-Serif" font-size="9.00">merge&#45;configs.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs -->
<g id="edge73" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M595,-652.35C595,-660.37 595,-670.62 595,-670.62 595,-670.62 673.37,-670.62 673.37,-670.62"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="673.37,-672.73 679.37,-670.63 673.37,-668.53 673.37,-672.73"/>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/read&#45;config.mjs -->
<g id="node55" class="node">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/read&#45;config.mjs</title>
<g id="a_node55"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-depcruise-config/read-config.mjs" xlink:title="read&#45;config.mjs">
<path fill="#99ffff" stroke="black" d="M761.83,-651.88C761.83,-651.88 694.67,-651.88 694.67,-651.88 691.71,-651.88 688.75,-648.92 688.75,-645.96 688.75,-645.96 688.75,-640.04 688.75,-640.04 688.75,-637.08 691.71,-634.12 694.67,-634.12 694.67,-634.12 761.83,-634.12 761.83,-634.12 764.79,-634.12 767.75,-637.08 767.75,-640.04 767.75,-640.04 767.75,-645.96 767.75,-645.96 767.75,-648.92 764.79,-651.88 761.83,-651.88"/>
<text xml:space="preserve" text-anchor="start" x="696.75" y="-639.33" font-family="Helvetica,sans-Serif" font-size="9.00">read&#45;config.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/read&#45;config.mjs -->
<g id="edge74" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/read&#45;config.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M622.31,-638.56C622.31,-638.56 679.41,-638.56 679.41,-638.56"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="679.41,-640.66 685.41,-638.56 679.41,-636.46 679.41,-640.66"/>
</g>
<!-- src/extract/resolve/resolve.mjs -->
<g id="node56" class="node">
<title>src/extract/resolve/resolve.mjs</title>
<g id="a_node56"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/resolve.mjs" xlink:title="resolve.mjs">
<path fill="#ccffcc" stroke="black" d="M1526.21,-930.88C1526.21,-930.88 1475.54,-930.88 1475.54,-930.88 1472.58,-930.88 1469.62,-927.92 1469.62,-924.96 1469.62,-924.96 1469.62,-919.04 1469.62,-919.04 1469.62,-916.08 1472.58,-913.12 1475.54,-913.12 1475.54,-913.12 1526.21,-913.12 1526.21,-913.12 1529.17,-913.12 1532.12,-916.08 1532.12,-919.04 1532.12,-919.04 1532.12,-924.96 1532.12,-924.96 1532.12,-927.92 1529.17,-930.88 1526.21,-930.88"/>
<text xml:space="preserve" text-anchor="start" x="1477.62" y="-918.33" font-family="Helvetica,sans-Serif" font-size="9.00">resolve.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/extract/resolve/resolve.mjs -->
<g id="edge75" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/extract/resolve/resolve.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M622.56,-647.44C635.48,-647.44 648,-647.44 648,-647.44 648,-647.44 648,-923.54 648,-923.54 648,-923.54 1460.23,-923.54 1460.23,-923.54"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1460.23,-925.64 1466.23,-923.54 1460.23,-921.44 1460.23,-925.64"/>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/main/resolve&#45;options/normalize.mjs -->
<g id="edge76" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs&#45;&gt;src/main/resolve&#45;options/normalize.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M622.48,-643C645,-643 673,-643 673,-643 673,-643 673,-2282.04 673,-2282.04 673,-2282.04 682.37,-2282.04 682.37,-2282.04"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="682.37,-2284.14 688.37,-2282.04 682.37,-2279.94 682.37,-2284.14"/>
</g>
<!-- src/report/dot -->
<g id="node152" class="node">
<title>src/report/dot</title>
<g id="a_node152"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/dot" xlink:title="dot">
<polygon fill="#ffccff" stroke="black" points="1181.88,-2185.88 1129.85,-2185.88 1127.88,-2183.9 1127.88,-2168.12 1179.9,-2168.12 1181.88,-2170.1 1181.88,-2185.88"/>
<polyline fill="none" stroke="black" points="1179.9,-2183.9 1127.88,-2183.9"/>
<polyline fill="none" stroke="black" points="1179.9,-2183.9 1179.9,-2168.12"/>
<polyline fill="none" stroke="black" points="1179.9,-2183.9 1181.88,-2185.88"/>
<text xml:space="preserve" text-anchor="start" x="1148.5" y="-2173.32" font-family="Helvetica,sans-Serif" font-size="9.00">dot</text>
</a>
</g>
</g>
<!-- src/report/dot&#45;webpage&#45;&gt;src/report/dot -->
<g id="edge272" class="edge">
<title>src/report/dot&#45;webpage&#45;&gt;src/report/dot</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1052.96,-2027C1064.31,-2027 1074,-2027 1074,-2027 1074,-2027 1074,-2177 1074,-2177 1074,-2177 1118.47,-2177 1118.47,-2177"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1118.47,-2179.1 1124.47,-2177 1118.47,-2174.9 1118.47,-2179.1"/>
</g>
<!-- src/utl/extract&#45;root&#45;module&#45;name.cjs -->
<g id="node171" class="node">
<title>src/utl/extract&#45;root&#45;module&#45;name.cjs</title>
<g id="a_node171"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/extract-root-module-name.cjs" xlink:title="utl&#45;module&#45;not&#45;shared&#45;enough">
<path fill="#cccccc" stroke="blue" d="M1873.08,-1701.88C1873.08,-1701.88 1749.67,-1701.88 1749.67,-1701.88 1746.71,-1701.88 1743.75,-1698.92 1743.75,-1695.96 1743.75,-1695.96 1743.75,-1690.04 1743.75,-1690.04 1743.75,-1687.08 1746.71,-1684.12 1749.67,-1684.12 1749.67,-1684.12 1873.08,-1684.12 1873.08,-1684.12 1876.04,-1684.12 1879,-1687.08 1879,-1690.04 1879,-1690.04 1879,-1695.96 1879,-1695.96 1879,-1698.92 1876.04,-1701.88 1873.08,-1701.88"/>
<text xml:space="preserve" text-anchor="start" x="1751.75" y="-1689.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">extract&#45;root&#45;module&#45;name.cjs</text>
</a>
</g>
</g>
<!-- src/utl/try&#45;import.mjs&#45;&gt;src/utl/extract&#45;root&#45;module&#45;name.cjs -->
<g id="edge284" class="edge">
<title>src/utl/try&#45;import.mjs&#45;&gt;src/utl/extract&#45;root&#45;module&#45;name.cjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1700.05,-1695.96C1700.05,-1695.96 1734.36,-1695.96 1734.36,-1695.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1734.36,-1698.06 1740.36,-1695.96 1734.36,-1693.86 1734.36,-1698.06"/>
</g>
<!-- src/utl/array&#45;util.mjs -->
<g id="node58" class="node">
<title>src/utl/array&#45;util.mjs</title>
<g id="a_node58"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/array-util.mjs" xlink:title="array&#45;util.mjs">
<path fill="#cccccc" stroke="black" d="M1692.83,-1851.88C1692.83,-1851.88 1636.17,-1851.88 1636.17,-1851.88 1633.21,-1851.88 1630.25,-1848.92 1630.25,-1845.96 1630.25,-1845.96 1630.25,-1840.04 1630.25,-1840.04 1630.25,-1837.08 1633.21,-1834.12 1636.17,-1834.12 1636.17,-1834.12 1692.83,-1834.12 1692.83,-1834.12 1695.79,-1834.12 1698.75,-1837.08 1698.75,-1840.04 1698.75,-1840.04 1698.75,-1845.96 1698.75,-1845.96 1698.75,-1848.92 1695.79,-1851.88 1692.83,-1851.88"/>
<text xml:space="preserve" text-anchor="start" x="1638.25" y="-1839.33" font-family="Helvetica,sans-Serif" font-size="9.00">array&#45;util.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge77" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;config/merge&#45;configs.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M774.02,-673C898.52,-673 1234,-673 1234,-673 1234,-673 1234,-1840.88 1234,-1840.88 1234,-1840.88 1620.97,-1840.88 1620.97,-1840.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.97,-1842.98 1626.97,-1840.88 1620.97,-1838.78 1620.97,-1842.98"/>
</g>
<!-- src/extract/helpers.mjs -->
<g id="node99" class="node">
<title>src/extract/helpers.mjs</title>
<g id="a_node99"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/helpers.mjs" xlink:title="helpers.mjs">
<path fill="#ccffcc" stroke="black" d="M1690.21,-1153.88C1690.21,-1153.88 1638.79,-1153.88 1638.79,-1153.88 1635.83,-1153.88 1632.88,-1150.92 1632.88,-1147.96 1632.88,-1147.96 1632.88,-1142.04 1632.88,-1142.04 1632.88,-1139.08 1635.83,-1136.12 1638.79,-1136.12 1638.79,-1136.12 1690.21,-1136.12 1690.21,-1136.12 1693.17,-1136.12 1696.12,-1139.08 1696.12,-1142.04 1696.12,-1142.04 1696.12,-1147.96 1696.12,-1147.96 1696.12,-1150.92 1693.17,-1153.88 1690.21,-1153.88"/>
<text xml:space="preserve" text-anchor="start" x="1640.88" y="-1141.33" font-family="Helvetica,sans-Serif" font-size="9.00">helpers.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/resolve.mjs&#45;&gt;src/extract/helpers.mjs -->
<g id="edge175" class="edge">
<title>src/extract/resolve/resolve.mjs&#45;&gt;src/extract/helpers.mjs</title>
<g id="a_edge175"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1532.33,-924.96C1579.73,-924.96 1664,-924.96 1664,-924.96 1664,-924.96 1664,-1126.8 1664,-1126.8"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1661.9,-1126.8 1664,-1132.8 1666.1,-1126.8 1661.9,-1126.8"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1617.88" y="-951.49" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/extract/resolve/resolve.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge176" class="edge">
<title>src/extract/resolve/resolve.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1532.61,-919.04C1611.65,-919.04 1811,-919.04 1811,-919.04 1811,-919.04 1811,-1644.83 1811,-1644.83"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1808.9,-1644.83 1811,-1650.83 1813.1,-1644.83 1808.9,-1644.83"/>
</g>
<!-- src/main/resolve&#45;options/normalize.mjs&#45;&gt;src/extract/transpile/meta.mjs -->
<g id="edge255" class="edge">
<title>src/main/resolve&#45;options/normalize.mjs&#45;&gt;src/extract/transpile/meta.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M764.96,-2282.04C879.39,-2282.04 1222,-2282.04 1222,-2282.04 1222,-2282.04 1222,-1428.92 1222,-1428.92 1222,-1428.92 1285.83,-1428.92 1285.83,-1428.92"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.83,-1431.02 1291.83,-1428.92 1285.83,-1426.82 1285.83,-1431.02"/>
</g>
<!-- src/graph&#45;utl/rule&#45;set.mjs -->
<g id="node84" class="node">
<title>src/graph&#45;utl/rule&#45;set.mjs</title>
<g id="a_node84"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/rule-set.mjs" xlink:title="rule&#45;set.mjs">
<path fill="#ffcccc" stroke="black" d="M1347.96,-2483.88C1347.96,-2483.88 1296.54,-2483.88 1296.54,-2483.88 1293.58,-2483.88 1290.62,-2480.92 1290.62,-2477.96 1290.62,-2477.96 1290.62,-2472.04 1290.62,-2472.04 1290.62,-2469.08 1293.58,-2466.12 1296.54,-2466.12 1296.54,-2466.12 1347.96,-2466.12 1347.96,-2466.12 1350.92,-2466.12 1353.88,-2469.08 1353.88,-2472.04 1353.88,-2472.04 1353.88,-2477.96 1353.88,-2477.96 1353.88,-2480.92 1350.92,-2483.88 1347.96,-2483.88"/>
<text xml:space="preserve" text-anchor="start" x="1298.62" y="-2471.32" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;set.mjs</text>
</a>
</g>
</g>
<!-- src/main/resolve&#45;options/normalize.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs -->
<g id="edge256" class="edge">
<title>src/main/resolve&#45;options/normalize.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M765.15,-2287.96C852.94,-2287.96 1067,-2287.96 1067,-2287.96 1067,-2287.96 1067,-2469.71 1067,-2469.71 1067,-2469.71 1281.15,-2469.71 1281.15,-2469.71"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1281.15,-2471.81 1287.15,-2469.71 1281.15,-2467.61 1281.15,-2471.81"/>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;options.mjs -->
<g id="node59" class="node">
<title>src/config&#45;utl/extract&#45;depcruise&#45;options.mjs</title>
<g id="a_node59"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/config-utl/extract-depcruise-options.mjs" xlink:title="extract&#45;depcruise&#45;options.mjs">
<path fill="#99ffff" stroke="black" d="M490.83,-643.88C490.83,-643.88 366.67,-643.88 366.67,-643.88 363.71,-643.88 360.75,-640.92 360.75,-637.96 360.75,-637.96 360.75,-632.04 360.75,-632.04 360.75,-629.08 363.71,-626.12 366.67,-626.12 366.67,-626.12 490.83,-626.12 490.83,-626.12 493.79,-626.12 496.75,-629.08 496.75,-632.04 496.75,-632.04 496.75,-637.96 496.75,-637.96 496.75,-640.92 493.79,-643.88 490.83,-643.88"/>
<text xml:space="preserve" text-anchor="start" x="368.75" y="-631.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;depcruise&#45;options.mjs</text>
</a>
</g>
</g>
<!-- src/config&#45;utl/extract&#45;depcruise&#45;options.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs -->
<g id="edge78" class="edge">
<title>src/config&#45;utl/extract&#45;depcruise&#45;options.mjs&#45;&gt;src/config&#45;utl/extract&#45;depcruise&#45;config/index.mjs</title>
<path fill="none" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" d="M497.18,-639C497.18,-639 557.85,-639 557.85,-639"/>
<polygon fill="#229999" fill-opacity="0.466667" stroke="#229999" stroke-width="2" stroke-opacity="0.466667" points="557.85,-641.1 563.85,-639 557.85,-636.9 557.85,-641.1"/>
</g>
<!-- src/enrich/add&#45;validations.mjs -->
<g id="node60" class="node">
<title>src/enrich/add&#45;validations.mjs</title>
<g id="a_node60"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/add-validations.mjs" xlink:title="add&#45;validations.mjs">
<path fill="#77eeaa" stroke="black" d="M1196.71,-2773.88C1196.71,-2773.88 1113.04,-2773.88 1113.04,-2773.88 1110.08,-2773.88 1107.12,-2770.92 1107.12,-2767.96 1107.12,-2767.96 1107.12,-2762.04 1107.12,-2762.04 1107.12,-2759.08 1110.08,-2756.12 1113.04,-2756.12 1113.04,-2756.12 1196.71,-2756.12 1196.71,-2756.12 1199.67,-2756.12 1202.62,-2759.08 1202.62,-2762.04 1202.62,-2762.04 1202.62,-2767.96 1202.62,-2767.96 1202.62,-2770.92 1199.67,-2773.88 1196.71,-2773.88"/>
<text xml:space="preserve" text-anchor="start" x="1115.12" y="-2761.32" font-family="Helvetica,sans-Serif" font-size="9.00">add&#45;validations.mjs</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs -->
<g id="node61" class="node">
<title>src/validate/index.mjs</title>
<g id="a_node61"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/index.mjs" xlink:title="index.mjs">
<path fill="#ccccff" stroke="black" d="M1176.46,-3151.88C1176.46,-3151.88 1133.29,-3151.88 1133.29,-3151.88 1130.33,-3151.88 1127.38,-3148.92 1127.38,-3145.96 1127.38,-3145.96 1127.38,-3140.04 1127.38,-3140.04 1127.38,-3137.08 1130.33,-3134.12 1133.29,-3134.12 1133.29,-3134.12 1176.46,-3134.12 1176.46,-3134.12 1179.42,-3134.12 1182.38,-3137.08 1182.38,-3140.04 1182.38,-3140.04 1182.38,-3145.96 1182.38,-3145.96 1182.38,-3148.92 1179.42,-3151.88 1176.46,-3151.88"/>
<text xml:space="preserve" text-anchor="start" x="1135.38" y="-3139.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/add&#45;validations.mjs&#45;&gt;src/validate/index.mjs -->
<g id="edge82" class="edge">
<title>src/enrich/add&#45;validations.mjs&#45;&gt;src/validate/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1202.98,-2765C1216.21,-2765 1227,-2765 1227,-2765 1227,-2765 1227,-3141.22 1227,-3141.22 1227,-3141.22 1191.58,-3141.22 1191.58,-3141.22"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1191.58,-3139.13 1185.58,-3141.23 1191.58,-3143.33 1191.58,-3139.13"/>
</g>
<!-- src/validate/index.d.ts -->
<g id="node172" class="node">
<title>src/validate/index.d.ts</title>
<g id="a_node172"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/index.d.ts" xlink:title="index.d.ts">
<path fill="#ccccff" stroke="black" d="M1343.83,-3121.88C1343.83,-3121.88 1300.67,-3121.88 1300.67,-3121.88 1297.71,-3121.88 1294.75,-3118.92 1294.75,-3115.96 1294.75,-3115.96 1294.75,-3110.04 1294.75,-3110.04 1294.75,-3107.08 1297.71,-3104.12 1300.67,-3104.12 1300.67,-3104.12 1343.83,-3104.12 1343.83,-3104.12 1346.79,-3104.12 1349.75,-3107.08 1349.75,-3110.04 1349.75,-3110.04 1349.75,-3115.96 1349.75,-3115.96 1349.75,-3118.92 1346.79,-3121.88 1343.83,-3121.88"/>
<text xml:space="preserve" text-anchor="start" x="1302.75" y="-3109.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.d.ts</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs&#45;&gt;src/validate/index.d.ts -->
<g id="edge286" class="edge">
<title>src/validate/index.mjs&#45;&gt;src/validate/index.d.ts</title>
<path fill="none" stroke="#0000ff" stroke-opacity="0.466667" d="M1155,-3133.84C1155,-3125.01 1155,-3113 1155,-3113 1155,-3113 1286.74,-3113 1286.74,-3113"/>
<polygon fill="none" stroke="#0000ff" stroke-opacity="0.466667" points="1286.74,-3115.1 1292.74,-3113 1286.74,-3110.9 1286.74,-3115.1"/>
</g>
<!-- src/validate/match&#45;dependency&#45;rule.mjs -->
<g id="node173" class="node">
<title>src/validate/match&#45;dependency&#45;rule.mjs</title>
<g id="a_node173"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/match-dependency-rule.mjs" xlink:title="match&#45;dependency&#45;rule.mjs">
<path fill="#ccccff" stroke="black" d="M1381.33,-3241.88C1381.33,-3241.88 1263.17,-3241.88 1263.17,-3241.88 1260.21,-3241.88 1257.25,-3238.92 1257.25,-3235.96 1257.25,-3235.96 1257.25,-3230.04 1257.25,-3230.04 1257.25,-3227.08 1260.21,-3224.12 1263.17,-3224.12 1263.17,-3224.12 1381.33,-3224.12 1381.33,-3224.12 1384.29,-3224.12 1387.25,-3227.08 1387.25,-3230.04 1387.25,-3230.04 1387.25,-3235.96 1387.25,-3235.96 1387.25,-3238.92 1384.29,-3241.88 1381.33,-3241.88"/>
<text xml:space="preserve" text-anchor="start" x="1265.25" y="-3229.32" font-family="Helvetica,sans-Serif" font-size="9.00">match&#45;dependency&#45;rule.mjs</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs&#45;&gt;src/validate/match&#45;dependency&#45;rule.mjs -->
<g id="edge287" class="edge">
<title>src/validate/index.mjs&#45;&gt;src/validate/match&#45;dependency&#45;rule.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1146,-3152.29C1146,-3175.29 1146,-3233 1146,-3233 1146,-3233 1247.84,-3233 1247.84,-3233"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1247.84,-3235.1 1253.84,-3233 1247.84,-3230.9 1247.84,-3235.1"/>
</g>
<!-- src/validate/match&#45;folder&#45;dependency&#45;rule.mjs -->
<g id="node174" class="node">
<title>src/validate/match&#45;folder&#45;dependency&#45;rule.mjs</title>
<g id="a_node174"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/match-folder-dependency-rule.mjs" xlink:title="match&#45;folder&#45;dependency&#45;rule.mjs">
<path fill="#ccccff" stroke="black" d="M1394.46,-3181.88C1394.46,-3181.88 1250.04,-3181.88 1250.04,-3181.88 1247.08,-3181.88 1244.12,-3178.92 1244.12,-3175.96 1244.12,-3175.96 1244.12,-3170.04 1244.12,-3170.04 1244.12,-3167.08 1247.08,-3164.12 1250.04,-3164.12 1250.04,-3164.12 1394.46,-3164.12 1394.46,-3164.12 1397.42,-3164.12 1400.38,-3167.08 1400.38,-3170.04 1400.38,-3170.04 1400.38,-3175.96 1400.38,-3175.96 1400.38,-3178.92 1397.42,-3181.88 1394.46,-3181.88"/>
<text xml:space="preserve" text-anchor="start" x="1252.12" y="-3169.32" font-family="Helvetica,sans-Serif" font-size="9.00">match&#45;folder&#45;dependency&#45;rule.mjs</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs&#45;&gt;src/validate/match&#45;folder&#45;dependency&#45;rule.mjs -->
<g id="edge288" class="edge">
<title>src/validate/index.mjs&#45;&gt;src/validate/match&#45;folder&#45;dependency&#45;rule.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.64,-3148.32C1210.72,-3148.32 1250,-3148.32 1250,-3148.32 1250,-3148.32 1250,-3154.78 1250,-3154.78"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1247.9,-3154.78 1250,-3160.78 1252.1,-3154.78 1247.9,-3154.78"/>
</g>
<!-- src/validate/match&#45;module&#45;rule.mjs -->
<g id="node175" class="node">
<title>src/validate/match&#45;module&#45;rule.mjs</title>
<g id="a_node175"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/match-module-rule.mjs" xlink:title="match&#45;module&#45;rule.mjs">
<path fill="#ccccff" stroke="black" d="M1371.21,-3211.88C1371.21,-3211.88 1273.29,-3211.88 1273.29,-3211.88 1270.33,-3211.88 1267.38,-3208.92 1267.38,-3205.96 1267.38,-3205.96 1267.38,-3200.04 1267.38,-3200.04 1267.38,-3197.08 1270.33,-3194.12 1273.29,-3194.12 1273.29,-3194.12 1371.21,-3194.12 1371.21,-3194.12 1374.17,-3194.12 1377.12,-3197.08 1377.12,-3200.04 1377.12,-3200.04 1377.12,-3205.96 1377.12,-3205.96 1377.12,-3208.92 1374.17,-3211.88 1371.21,-3211.88"/>
<text xml:space="preserve" text-anchor="start" x="1275.38" y="-3199.32" font-family="Helvetica,sans-Serif" font-size="9.00">match&#45;module&#45;rule.mjs</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs&#45;&gt;src/validate/match&#45;module&#45;rule.mjs -->
<g id="edge289" class="edge">
<title>src/validate/index.mjs&#45;&gt;src/validate/match&#45;module&#45;rule.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1164,-3152.38C1164,-3169.25 1164,-3203 1164,-3203 1164,-3203 1257.87,-3203 1257.87,-3203"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1257.87,-3205.1 1263.87,-3203 1257.87,-3200.9 1257.87,-3205.1"/>
</g>
<!-- src/validate/violates&#45;required&#45;rule.mjs -->
<g id="node176" class="node">
<title>src/validate/violates&#45;required&#45;rule.mjs</title>
<g id="a_node176"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/violates-required-rule.mjs" xlink:title="violates&#45;required&#45;rule.mjs">
<path fill="#ccccff" stroke="black" d="M1376.46,-3151.88C1376.46,-3151.88 1268.04,-3151.88 1268.04,-3151.88 1265.08,-3151.88 1262.12,-3148.92 1262.12,-3145.96 1262.12,-3145.96 1262.12,-3140.04 1262.12,-3140.04 1262.12,-3137.08 1265.08,-3134.12 1268.04,-3134.12 1268.04,-3134.12 1376.46,-3134.12 1376.46,-3134.12 1379.42,-3134.12 1382.38,-3137.08 1382.38,-3140.04 1382.38,-3140.04 1382.38,-3145.96 1382.38,-3145.96 1382.38,-3148.92 1379.42,-3151.88 1376.46,-3151.88"/>
<text xml:space="preserve" text-anchor="start" x="1270.12" y="-3139.32" font-family="Helvetica,sans-Serif" font-size="9.00">violates&#45;required&#45;rule.mjs</text>
</a>
</g>
</g>
<!-- src/validate/index.mjs&#45;&gt;src/validate/violates&#45;required&#45;rule.mjs -->
<g id="edge290" class="edge">
<title>src/validate/index.mjs&#45;&gt;src/validate/violates&#45;required&#45;rule.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.51,-3144.78C1182.51,-3144.78 1252.89,-3144.78 1252.89,-3144.78"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1252.89,-3146.88 1258.89,-3144.78 1252.89,-3142.68 1252.89,-3146.88"/>
</g>
<!-- src/enrich/derive/circular.mjs -->
<g id="node62" class="node">
<title>src/enrich/derive/circular.mjs</title>
<g id="a_node62"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/circular.mjs" xlink:title="circular.mjs">
<path fill="#77eeaa" stroke="black" d="M1347.58,-2862.88C1347.58,-2862.88 1296.92,-2862.88 1296.92,-2862.88 1293.96,-2862.88 1291,-2859.92 1291,-2856.96 1291,-2856.96 1291,-2851.04 1291,-2851.04 1291,-2848.08 1293.96,-2845.12 1296.92,-2845.12 1296.92,-2845.12 1347.58,-2845.12 1347.58,-2845.12 1350.54,-2845.12 1353.5,-2848.08 1353.5,-2851.04 1353.5,-2851.04 1353.5,-2856.96 1353.5,-2856.96 1353.5,-2859.92 1350.54,-2862.88 1347.58,-2862.88"/>
<text xml:space="preserve" text-anchor="start" x="1299" y="-2850.32" font-family="Helvetica,sans-Serif" font-size="9.00">circular.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/dependents.mjs -->
<g id="node63" class="node">
<title>src/enrich/derive/dependents.mjs</title>
<g id="a_node63"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/dependents.mjs" xlink:title="dependents.mjs">
<path fill="#77eeaa" stroke="black" d="M1189.58,-2907.88C1189.58,-2907.88 1120.17,-2907.88 1120.17,-2907.88 1117.21,-2907.88 1114.25,-2904.92 1114.25,-2901.96 1114.25,-2901.96 1114.25,-2896.04 1114.25,-2896.04 1114.25,-2893.08 1117.21,-2890.12 1120.17,-2890.12 1120.17,-2890.12 1189.58,-2890.12 1189.58,-2890.12 1192.54,-2890.12 1195.5,-2893.08 1195.5,-2896.04 1195.5,-2896.04 1195.5,-2901.96 1195.5,-2901.96 1195.5,-2904.92 1192.54,-2907.88 1189.58,-2907.88"/>
<text xml:space="preserve" text-anchor="start" x="1122.25" y="-2895.32" font-family="Helvetica,sans-Serif" font-size="9.00">dependents.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/module&#45;utl.mjs -->
<g id="node64" class="node">
<title>src/enrich/derive/module&#45;utl.mjs</title>
<g id="a_node64"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/module-utl.mjs" xlink:title="module&#45;utl.mjs">
<path fill="#77eeaa" stroke="black" d="M1354.33,-2892.88C1354.33,-2892.88 1290.17,-2892.88 1290.17,-2892.88 1287.21,-2892.88 1284.25,-2889.92 1284.25,-2886.96 1284.25,-2886.96 1284.25,-2881.04 1284.25,-2881.04 1284.25,-2878.08 1287.21,-2875.12 1290.17,-2875.12 1290.17,-2875.12 1354.33,-2875.12 1354.33,-2875.12 1357.29,-2875.12 1360.25,-2878.08 1360.25,-2881.04 1360.25,-2881.04 1360.25,-2886.96 1360.25,-2886.96 1360.25,-2889.92 1357.29,-2892.88 1354.33,-2892.88"/>
<text xml:space="preserve" text-anchor="start" x="1292.25" y="-2880.32" font-family="Helvetica,sans-Serif" font-size="9.00">module&#45;utl.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/dependents.mjs&#45;&gt;src/enrich/derive/module&#45;utl.mjs -->
<g id="edge83" class="edge">
<title>src/enrich/derive/dependents.mjs&#45;&gt;src/enrich/derive/module&#45;utl.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1191,-2889.83C1191,-2888.23 1191,-2887.06 1191,-2887.06 1191,-2887.06 1274.91,-2887.06 1274.91,-2887.06"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1274.91,-2889.16 1280.91,-2887.06 1274.91,-2884.96 1274.91,-2889.16"/>
</g>
<!-- src/enrich/derive/folders -->
<g id="node65" class="node">
<title>src/enrich/derive/folders</title>
<g id="a_node65"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/folders" xlink:title="folders">
<polygon fill="#77eeaa" stroke="black" points="1181.88,-2877.88 1129.85,-2877.88 1127.88,-2875.9 1127.88,-2860.12 1179.9,-2860.12 1181.88,-2862.1 1181.88,-2877.88"/>
<polyline fill="none" stroke="black" points="1179.9,-2875.9 1127.88,-2875.9"/>
<polyline fill="none" stroke="black" points="1179.9,-2875.9 1179.9,-2860.12"/>
<polyline fill="none" stroke="black" points="1179.9,-2875.9 1181.88,-2877.88"/>
<text xml:space="preserve" text-anchor="start" x="1141" y="-2865.32" font-family="Helvetica,sans-Serif" font-size="9.00">folders</text>
</a>
</g>
</g>
<!-- src/enrich/derive/folders&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge88" class="edge">
<title>src/enrich/derive/folders&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1182.19,-2865.94C1201.14,-2865.94 1223,-2865.94 1223,-2865.94 1223,-2865.94 1223,-1841.88 1223,-1841.88 1223,-1841.88 1620.83,-1841.88 1620.83,-1841.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.83,-1843.98 1626.83,-1841.88 1620.83,-1839.78 1620.83,-1843.98"/>
</g>
<!-- src/enrich/derive/folders&#45;&gt;src/validate/index.mjs -->
<g id="edge84" class="edge">
<title>src/enrich/derive/folders&#45;&gt;src/validate/index.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.16,-2872.06C1194.77,-2872.06 1207,-2872.06 1207,-2872.06 1207,-2872.06 1207,-3137.68 1207,-3137.68 1207,-3137.68 1191.8,-3137.68 1191.8,-3137.68"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1191.8,-3135.58 1185.8,-3137.68 1191.8,-3139.78 1191.8,-3135.58"/>
</g>
<!-- src/enrich/derive/folders&#45;&gt;src/enrich/derive/circular.mjs -->
<g id="edge85" class="edge">
<title>src/enrich/derive/folders&#45;&gt;src/enrich/derive/circular.mjs</title>
<g id="a_edge85"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1155,-2859.76C1155,-2856.67 1155,-2854 1155,-2854 1155,-2854 1281.76,-2854 1281.76,-2854"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1281.76,-2856.1 1287.76,-2854 1281.76,-2851.9 1281.76,-2856.1"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1261.63" y="-2845.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/enrich/derive/folders&#45;&gt;src/enrich/derive/module&#45;utl.mjs -->
<g id="edge86" class="edge">
<title>src/enrich/derive/folders&#45;&gt;src/enrich/derive/module&#45;utl.mjs</title>
<g id="a_edge86"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1155,-2878.24C1155,-2881.33 1155,-2884 1155,-2884 1155,-2884 1274.85,-2884 1274.85,-2884"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1274.85,-2886.1 1280.85,-2884 1274.85,-2881.9 1274.85,-2886.1"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1258.17" y="-2875.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="node66" class="node">
<title>src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<g id="a_node66"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/indexed-module-graph.mjs" xlink:title="indexed&#45;module&#45;graph.mjs">
<path fill="#ffcccc" stroke="black" d="M1721.71,-2483.88C1721.71,-2483.88 1607.29,-2483.88 1607.29,-2483.88 1604.33,-2483.88 1601.38,-2480.92 1601.38,-2477.96 1601.38,-2477.96 1601.38,-2472.04 1601.38,-2472.04 1601.38,-2469.08 1604.33,-2466.12 1607.29,-2466.12 1607.29,-2466.12 1721.71,-2466.12 1721.71,-2466.12 1724.67,-2466.12 1727.62,-2469.08 1727.62,-2472.04 1727.62,-2472.04 1727.62,-2477.96 1727.62,-2477.96 1727.62,-2480.92 1724.67,-2483.88 1721.71,-2483.88"/>
<text xml:space="preserve" text-anchor="start" x="1609.38" y="-2471.32" font-family="Helvetica,sans-Serif" font-size="9.00">indexed&#45;module&#45;graph.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/folders&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge87" class="edge">
<title>src/enrich/derive/folders&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.12,-2869C1281.39,-2869 1618,-2869 1618,-2869 1618,-2869 1618,-2493.38 1618,-2493.38"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.1,-2493.38 1618,-2487.38 1615.9,-2493.38 1620.1,-2493.38"/>
</g>
<!-- src/enrich/derive/metrics -->
<g id="node67" class="node">
<title>src/enrich/derive/metrics</title>
<g id="a_node67"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/metrics" xlink:title="metrics">
<polygon fill="#77eeaa" stroke="black" points="1181.88,-2847.88 1129.85,-2847.88 1127.88,-2845.9 1127.88,-2830.12 1179.9,-2830.12 1181.88,-2832.1 1181.88,-2847.88"/>
<polyline fill="none" stroke="black" points="1179.9,-2845.9 1127.88,-2845.9"/>
<polyline fill="none" stroke="black" points="1179.9,-2845.9 1179.9,-2830.12"/>
<polyline fill="none" stroke="black" points="1179.9,-2845.9 1181.88,-2847.88"/>
<text xml:space="preserve" text-anchor="start" x="1140.25" y="-2835.32" font-family="Helvetica,sans-Serif" font-size="9.00">metrics</text>
</a>
</g>
</g>
<!-- src/enrich/derive/metrics&#45;&gt;src/enrich/derive/module&#45;utl.mjs -->
<g id="edge89" class="edge">
<title>src/enrich/derive/metrics&#45;&gt;src/enrich/derive/module&#45;utl.mjs</title>
<g id="a_edge89"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1182.18,-2840.12C1184.51,-2840.12 1186,-2840.12 1186,-2840.12 1186,-2840.12 1186,-2880.94 1186,-2880.94 1186,-2880.94 1274.91,-2880.94 1274.91,-2880.94"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1274.91,-2883.04 1280.91,-2880.94 1274.91,-2878.84 1274.91,-2883.04"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1254.26" y="-2872.39" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/enrich/derive/metrics&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge90" class="edge">
<title>src/enrich/derive/metrics&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.16,-2835.12C1280.79,-2835.12 1613,-2835.12 1613,-2835.12 1613,-2835.12 1613,-2493.29 1613,-2493.29"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1615.1,-2493.29 1613,-2487.29 1610.9,-2493.29 1615.1,-2493.29"/>
</g>
<!-- src/enrich/derive/orphan -->
<g id="node68" class="node">
<title>src/enrich/derive/orphan</title>
<g id="a_node68"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/orphan" xlink:title="orphan">
<polygon fill="#77eeaa" stroke="black" points="1181.88,-2937.88 1129.85,-2937.88 1127.88,-2935.9 1127.88,-2920.12 1179.9,-2920.12 1181.88,-2922.1 1181.88,-2937.88"/>
<polyline fill="none" stroke="black" points="1179.9,-2935.9 1127.88,-2935.9"/>
<polyline fill="none" stroke="black" points="1179.9,-2935.9 1179.9,-2920.12"/>
<polyline fill="none" stroke="black" points="1179.9,-2935.9 1181.88,-2937.88"/>
<text xml:space="preserve" text-anchor="start" x="1140.25" y="-2925.32" font-family="Helvetica,sans-Serif" font-size="9.00">orphan</text>
</a>
</g>
</g>
<!-- src/enrich/derive/orphan&#45;&gt;src/enrich/derive/module&#45;utl.mjs -->
<g id="edge91" class="edge">
<title>src/enrich/derive/orphan&#45;&gt;src/enrich/derive/module&#45;utl.mjs</title>
<g id="a_edge91"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1182.34,-2929C1221.58,-2929 1289,-2929 1289,-2929 1289,-2929 1289,-2902.13 1289,-2902.13"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1291.1,-2902.13 1289,-2896.13 1286.9,-2902.13 1291.1,-2902.13"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1295.23" y="-2920.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/enrich/derive/reachable.mjs -->
<g id="node69" class="node">
<title>src/enrich/derive/reachable.mjs</title>
<g id="a_node69"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/derive/reachable.mjs" xlink:title="reachable.mjs">
<path fill="#77eeaa" stroke="black" d="M1185.83,-2967.88C1185.83,-2967.88 1123.92,-2967.88 1123.92,-2967.88 1120.96,-2967.88 1118,-2964.92 1118,-2961.96 1118,-2961.96 1118,-2956.04 1118,-2956.04 1118,-2953.08 1120.96,-2950.12 1123.92,-2950.12 1123.92,-2950.12 1185.83,-2950.12 1185.83,-2950.12 1188.79,-2950.12 1191.75,-2953.08 1191.75,-2956.04 1191.75,-2956.04 1191.75,-2961.96 1191.75,-2961.96 1191.75,-2964.92 1188.79,-2967.88 1185.83,-2967.88"/>
<text xml:space="preserve" text-anchor="start" x="1126" y="-2955.32" font-family="Helvetica,sans-Serif" font-size="9.00">reachable.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/reachable.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge92" class="edge">
<title>src/enrich/derive/reachable.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1192.08,-2961.96C1303.04,-2961.96 1624,-2961.96 1624,-2961.96 1624,-2961.96 1624,-2493.32 1624,-2493.32"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1626.1,-2493.32 1624,-2487.32 1621.9,-2493.32 1626.1,-2493.32"/>
</g>
<!-- src/utl/regex&#45;util.mjs -->
<g id="node70" class="node">
<title>src/utl/regex&#45;util.mjs</title>
<g id="a_node70"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/regex-util.mjs" xlink:title="regex&#45;util.mjs">
<path fill="#cccccc" stroke="black" d="M1693.96,-1881.88C1693.96,-1881.88 1635.04,-1881.88 1635.04,-1881.88 1632.08,-1881.88 1629.12,-1878.92 1629.12,-1875.96 1629.12,-1875.96 1629.12,-1870.04 1629.12,-1870.04 1629.12,-1867.08 1632.08,-1864.12 1635.04,-1864.12 1635.04,-1864.12 1693.96,-1864.12 1693.96,-1864.12 1696.92,-1864.12 1699.88,-1867.08 1699.88,-1870.04 1699.88,-1870.04 1699.88,-1875.96 1699.88,-1875.96 1699.88,-1878.92 1696.92,-1881.88 1693.96,-1881.88"/>
<text xml:space="preserve" text-anchor="start" x="1637.12" y="-1869.33" font-family="Helvetica,sans-Serif" font-size="9.00">regex&#45;util.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/reachable.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge93" class="edge">
<title>src/enrich/derive/reachable.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1191.87,-2956.04C1208.3,-2956.04 1224,-2956.04 1224,-2956.04 1224,-2956.04 1224,-1866.66 1224,-1866.66 1224,-1866.66 1619.8,-1866.66 1619.8,-1866.66"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.8,-1868.76 1625.8,-1866.66 1619.8,-1864.56 1619.8,-1868.76"/>
</g>
<!-- src/validate/matchers.mjs -->
<g id="node71" class="node">
<title>src/validate/matchers.mjs</title>
<g id="a_node71"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/matchers.mjs" xlink:title="matchers.mjs">
<path fill="#ccccff" stroke="black" d="M1693.58,-3129.88C1693.58,-3129.88 1635.42,-3129.88 1635.42,-3129.88 1632.46,-3129.88 1629.5,-3126.92 1629.5,-3123.96 1629.5,-3123.96 1629.5,-3118.04 1629.5,-3118.04 1629.5,-3115.08 1632.46,-3112.12 1635.42,-3112.12 1635.42,-3112.12 1693.58,-3112.12 1693.58,-3112.12 1696.54,-3112.12 1699.5,-3115.08 1699.5,-3118.04 1699.5,-3118.04 1699.5,-3123.96 1699.5,-3123.96 1699.5,-3126.92 1696.54,-3129.88 1693.58,-3129.88"/>
<text xml:space="preserve" text-anchor="start" x="1637.5" y="-3117.32" font-family="Helvetica,sans-Serif" font-size="9.00">matchers.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/derive/reachable.mjs&#45;&gt;src/validate/matchers.mjs -->
<g id="edge94" class="edge">
<title>src/enrich/derive/reachable.mjs&#45;&gt;src/validate/matchers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1187,-2968.31C1187,-3003.11 1187,-3123.47 1187,-3123.47 1187,-3123.47 1620.36,-3123.47 1620.36,-3123.47"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1620.36,-3125.58 1626.36,-3123.48 1620.36,-3121.38 1620.36,-3125.58"/>
</g>
<!-- src/validate/matchers.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge301" class="edge">
<title>src/validate/matchers.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1699.95,-3121C1716.67,-3121 1733,-3121 1733,-3121 1733,-3121 1733,-1843 1733,-1843 1733,-1843 1708.18,-1843 1708.18,-1843"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1708.18,-1840.9 1702.18,-1843 1708.18,-1845.1 1708.18,-1840.9"/>
</g>
<!-- src/validate/matchers.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge302" class="edge">
<title>src/validate/matchers.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1629.17,-3117C1612.84,-3117 1597,-3117 1597,-3117 1597,-3117 1597,-1879.34 1597,-1879.34 1597,-1879.34 1619.75,-1879.34 1619.75,-1879.34"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.75,-1881.44 1625.75,-1879.34 1619.75,-1877.24 1619.75,-1881.44"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs -->
<g id="node72" class="node">
<title>src/enrich/enrich&#45;modules.mjs</title>
<g id="a_node72"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/enrich-modules.mjs" xlink:title="enrich&#45;modules.mjs">
<path fill="#77eeaa" stroke="black" d="M1059.71,-2832.88C1059.71,-2832.88 975.29,-2832.88 975.29,-2832.88 972.33,-2832.88 969.38,-2829.92 969.38,-2826.96 969.38,-2826.96 969.38,-2821.04 969.38,-2821.04 969.38,-2818.08 972.33,-2815.12 975.29,-2815.12 975.29,-2815.12 1059.71,-2815.12 1059.71,-2815.12 1062.67,-2815.12 1065.62,-2818.08 1065.62,-2821.04 1065.62,-2821.04 1065.62,-2826.96 1065.62,-2826.96 1065.62,-2829.92 1062.67,-2832.88 1059.71,-2832.88"/>
<text xml:space="preserve" text-anchor="start" x="977.38" y="-2820.32" font-family="Helvetica,sans-Serif" font-size="9.00">enrich&#45;modules.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/add&#45;validations.mjs -->
<g id="edge95" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/add&#45;validations.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1012,-2814.78C1012,-2798.19 1012,-2765 1012,-2765 1012,-2765 1097.88,-2765 1097.88,-2765"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1097.88,-2767.1 1103.88,-2765 1097.88,-2762.9 1097.88,-2767.1"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/circular.mjs -->
<g id="edge96" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/circular.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1066.09,-2823.7C1152.05,-2823.7 1322,-2823.7 1322,-2823.7 1322,-2823.7 1322,-2835.72 1322,-2835.72"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1319.9,-2835.72 1322,-2841.72 1324.1,-2835.72 1319.9,-2835.72"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/dependents.mjs -->
<g id="edge97" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/dependents.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1065.92,-2827.98C1092.85,-2827.98 1121,-2827.98 1121,-2827.98 1121,-2827.98 1121,-2880.69 1121,-2880.69"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1118.9,-2880.69 1121,-2886.69 1123.1,-2880.69 1118.9,-2880.69"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge103" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1065.99,-2821.55C1207.01,-2821.55 1607,-2821.55 1607,-2821.55 1607,-2821.55 1607,-2493.3 1607,-2493.3"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1609.1,-2493.3 1607,-2487.3 1604.9,-2493.3 1609.1,-2493.3"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/metrics -->
<g id="edge98" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/metrics</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1065.98,-2825.84C1105.56,-2825.84 1155,-2825.84 1155,-2825.84 1155,-2825.84 1155,-2826.23 1155,-2826.23"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1152.9,-2820.69 1155,-2826.69 1157.1,-2820.69 1152.9,-2820.69"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/orphan -->
<g id="edge99" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/orphan</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1034,-2833.32C1034,-2859.02 1034,-2929 1034,-2929 1034,-2929 1118.42,-2929 1118.42,-2929"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1118.42,-2931.1 1124.42,-2929 1118.42,-2926.9 1118.42,-2931.1"/>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/reachable.mjs -->
<g id="edge100" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/derive/reachable.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1001,-2833.28C1001,-2863.78 1001,-2959 1001,-2959 1001,-2959 1108.6,-2959 1108.6,-2959"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1108.6,-2961.1 1114.6,-2959 1108.6,-2956.9 1108.6,-2961.1"/>
</g>
<!-- src/enrich/soften&#45;known&#45;violations.mjs -->
<g id="node73" class="node">
<title>src/enrich/soften&#45;known&#45;violations.mjs</title>
<g id="a_node73"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/soften-known-violations.mjs" xlink:title="soften&#45;known&#45;violations.mjs">
<path fill="#77eeaa" stroke="black" d="M1213.58,-2803.88C1213.58,-2803.88 1096.17,-2803.88 1096.17,-2803.88 1093.21,-2803.88 1090.25,-2800.92 1090.25,-2797.96 1090.25,-2797.96 1090.25,-2792.04 1090.25,-2792.04 1090.25,-2789.08 1093.21,-2786.12 1096.17,-2786.12 1096.17,-2786.12 1213.58,-2786.12 1213.58,-2786.12 1216.54,-2786.12 1219.5,-2789.08 1219.5,-2792.04 1219.5,-2792.04 1219.5,-2797.96 1219.5,-2797.96 1219.5,-2800.92 1216.54,-2803.88 1213.58,-2803.88"/>
<text xml:space="preserve" text-anchor="start" x="1098.25" y="-2791.32" font-family="Helvetica,sans-Serif" font-size="9.00">soften&#45;known&#45;violations.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/soften&#45;known&#45;violations.mjs -->
<g id="edge101" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/enrich/soften&#45;known&#45;violations.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1065.67,-2817.27C1084.65,-2817.27 1102,-2817.27 1102,-2817.27 1102,-2817.27 1102,-2813.34 1102,-2813.34"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1104.1,-2813.34 1102,-2807.34 1099.9,-2813.34 1104.1,-2813.34"/>
</g>
<!-- src/graph&#45;utl/add&#45;focus.mjs -->
<g id="node74" class="node">
<title>src/graph&#45;utl/add&#45;focus.mjs</title>
<g id="a_node74"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/add-focus.mjs" xlink:title="add&#45;focus.mjs">
<path fill="#ffcccc" stroke="black" d="M1531.46,-2481.88C1531.46,-2481.88 1470.29,-2481.88 1470.29,-2481.88 1467.33,-2481.88 1464.38,-2478.92 1464.38,-2475.96 1464.38,-2475.96 1464.38,-2470.04 1464.38,-2470.04 1464.38,-2467.08 1467.33,-2464.12 1470.29,-2464.12 1470.29,-2464.12 1531.46,-2464.12 1531.46,-2464.12 1534.42,-2464.12 1537.38,-2467.08 1537.38,-2470.04 1537.38,-2470.04 1537.38,-2475.96 1537.38,-2475.96 1537.38,-2478.92 1534.42,-2481.88 1531.46,-2481.88"/>
<text xml:space="preserve" text-anchor="start" x="1472.38" y="-2469.32" font-family="Helvetica,sans-Serif" font-size="9.00">add&#45;focus.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/enrich&#45;modules.mjs&#45;&gt;src/graph&#45;utl/add&#45;focus.mjs -->
<g id="edge102" class="edge">
<title>src/enrich/enrich&#45;modules.mjs&#45;&gt;src/graph&#45;utl/add&#45;focus.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1066.07,-2819.41C1188.68,-2819.41 1501,-2819.41 1501,-2819.41 1501,-2819.41 1501,-2491.29 1501,-2491.29"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1503.1,-2491.29 1501,-2485.29 1498.9,-2491.29 1503.1,-2491.29"/>
</g>
<!-- src/enrich/summarize/is&#45;same&#45;violation.mjs -->
<g id="node77" class="node">
<title>src/enrich/summarize/is&#45;same&#45;violation.mjs</title>
<g id="a_node77"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/is-same-violation.mjs" xlink:title="is&#45;same&#45;violation.mjs">
<path fill="#77eeaa" stroke="black" d="M1367.46,-2706.88C1367.46,-2706.88 1277.04,-2706.88 1277.04,-2706.88 1274.08,-2706.88 1271.12,-2703.92 1271.12,-2700.96 1271.12,-2700.96 1271.12,-2695.04 1271.12,-2695.04 1271.12,-2692.08 1274.08,-2689.12 1277.04,-2689.12 1277.04,-2689.12 1367.46,-2689.12 1367.46,-2689.12 1370.42,-2689.12 1373.38,-2692.08 1373.38,-2695.04 1373.38,-2695.04 1373.38,-2700.96 1373.38,-2700.96 1373.38,-2703.92 1370.42,-2706.88 1367.46,-2706.88"/>
<text xml:space="preserve" text-anchor="start" x="1279.12" y="-2694.32" font-family="Helvetica,sans-Serif" font-size="9.00">is&#45;same&#45;violation.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/soften&#45;known&#45;violations.mjs&#45;&gt;src/enrich/summarize/is&#45;same&#45;violation.mjs -->
<g id="edge107" class="edge">
<title>src/enrich/soften&#45;known&#45;violations.mjs&#45;&gt;src/enrich/summarize/is&#45;same&#45;violation.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1219.68,-2795C1249.35,-2795 1278,-2795 1278,-2795 1278,-2795 1278,-2716.33 1278,-2716.33"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1280.1,-2716.33 1278,-2710.33 1275.9,-2716.33 1280.1,-2716.33"/>
</g>
<!-- src/graph&#45;utl/add&#45;focus.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs -->
<g id="edge215" class="edge">
<title>src/graph&#45;utl/add&#45;focus.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1537.69,-2471.38C1565.54,-2471.38 1599,-2471.38 1599,-2471.38 1599,-2471.38 1599,-2365 1599,-2365 1599,-2365 1611.06,-2365 1611.06,-2365"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1611.06,-2367.1 1617.06,-2365 1611.06,-2362.9 1611.06,-2367.1"/>
</g>
<!-- src/graph&#45;utl/add&#45;focus.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge214" class="edge">
<title>src/graph&#45;utl/add&#45;focus.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1537.6,-2476.62C1537.6,-2476.62 1591.88,-2476.62 1591.88,-2476.62"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1591.88,-2478.73 1597.88,-2476.63 1591.88,-2474.53 1591.88,-2478.73"/>
</g>
<!-- src/enrich/index.mjs&#45;&gt;src/enrich/derive/folders -->
<g id="edge104" class="edge">
<title>src/enrich/index.mjs&#45;&gt;src/enrich/derive/folders</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M871,-2755.24C871,-2783.85 871,-2869 871,-2869 871,-2869 1118.37,-2869 1118.37,-2869"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1118.37,-2871.1 1124.37,-2869 1118.37,-2866.9 1118.37,-2871.1"/>
</g>
<!-- src/enrich/index.mjs&#45;&gt;src/enrich/enrich&#45;modules.mjs -->
<g id="edge105" class="edge">
<title>src/enrich/index.mjs&#45;&gt;src/enrich/enrich&#45;modules.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M889,-2755.25C889,-2775.92 889,-2824 889,-2824 889,-2824 959.89,-2824 959.89,-2824"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="959.89,-2826.1 965.89,-2824 959.89,-2821.9 959.89,-2826.1"/>
</g>
<!-- src/enrich/summarize/index.mjs -->
<g id="node76" class="node">
<title>src/enrich/summarize/index.mjs</title>
<g id="a_node76"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/index.mjs" xlink:title="index.mjs">
<path fill="#77eeaa" stroke="black" d="M1039.08,-2676.88C1039.08,-2676.88 995.92,-2676.88 995.92,-2676.88 992.96,-2676.88 990,-2673.92 990,-2670.96 990,-2670.96 990,-2665.04 990,-2665.04 990,-2662.08 992.96,-2659.12 995.92,-2659.12 995.92,-2659.12 1039.08,-2659.12 1039.08,-2659.12 1042.04,-2659.12 1045,-2662.08 1045,-2665.04 1045,-2665.04 1045,-2670.96 1045,-2670.96 1045,-2673.92 1042.04,-2676.88 1039.08,-2676.88"/>
<text xml:space="preserve" text-anchor="start" x="998" y="-2664.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/index.mjs&#45;&gt;src/enrich/summarize/index.mjs -->
<g id="edge106" class="edge">
<title>src/enrich/index.mjs&#45;&gt;src/enrich/summarize/index.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M907.57,-2746C943.36,-2746 1001,-2746 1001,-2746 1001,-2746 1001,-2686.28 1001,-2686.28"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1003.1,-2686.28 1001,-2680.28 998.9,-2686.28 1003.1,-2686.28"/>
</g>
<!-- src/enrich/summarize/add&#45;rule&#45;set&#45;used.mjs -->
<g id="node78" class="node">
<title>src/enrich/summarize/add&#45;rule&#45;set&#45;used.mjs</title>
<g id="a_node78"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/add-rule-set-used.mjs" xlink:title="add&#45;rule&#45;set&#45;used.mjs">
<path fill="#77eeaa" stroke="black" d="M1201.58,-2601.88C1201.58,-2601.88 1108.17,-2601.88 1108.17,-2601.88 1105.21,-2601.88 1102.25,-2598.92 1102.25,-2595.96 1102.25,-2595.96 1102.25,-2590.04 1102.25,-2590.04 1102.25,-2587.08 1105.21,-2584.12 1108.17,-2584.12 1108.17,-2584.12 1201.58,-2584.12 1201.58,-2584.12 1204.54,-2584.12 1207.5,-2587.08 1207.5,-2590.04 1207.5,-2590.04 1207.5,-2595.96 1207.5,-2595.96 1207.5,-2598.92 1204.54,-2601.88 1201.58,-2601.88"/>
<text xml:space="preserve" text-anchor="start" x="1110.25" y="-2589.32" font-family="Helvetica,sans-Serif" font-size="9.00">add&#45;rule&#45;set&#45;used.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/add&#45;rule&#45;set&#45;used.mjs -->
<g id="edge108" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/add&#45;rule&#45;set&#45;used.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1012,-2658.8C1012,-2638.78 1012,-2593 1012,-2593 1012,-2593 1093.05,-2593 1093.05,-2593"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1093.05,-2595.1 1099.05,-2593 1093.05,-2590.9 1093.05,-2595.1"/>
</g>
<!-- src/enrich/summarize/get&#45;stats.mjs -->
<g id="node79" class="node">
<title>src/enrich/summarize/get&#45;stats.mjs</title>
<g id="a_node79"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/get-stats.mjs" xlink:title="get&#45;stats.mjs">
<path fill="#77eeaa" stroke="black" d="M1182.46,-2631.88C1182.46,-2631.88 1127.29,-2631.88 1127.29,-2631.88 1124.33,-2631.88 1121.38,-2628.92 1121.38,-2625.96 1121.38,-2625.96 1121.38,-2620.04 1121.38,-2620.04 1121.38,-2617.08 1124.33,-2614.12 1127.29,-2614.12 1127.29,-2614.12 1182.46,-2614.12 1182.46,-2614.12 1185.42,-2614.12 1188.38,-2617.08 1188.38,-2620.04 1188.38,-2620.04 1188.38,-2625.96 1188.38,-2625.96 1188.38,-2628.92 1185.42,-2631.88 1182.46,-2631.88"/>
<text xml:space="preserve" text-anchor="start" x="1129.38" y="-2619.32" font-family="Helvetica,sans-Serif" font-size="9.00">get&#45;stats.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/get&#45;stats.mjs -->
<g id="edge109" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/get&#45;stats.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1023,-2658.89C1023,-2645.74 1023,-2623 1023,-2623 1023,-2623 1111.89,-2623 1111.89,-2623"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1111.89,-2625.1 1117.89,-2623 1111.89,-2620.9 1111.89,-2625.1"/>
</g>
<!-- src/enrich/summarize/summarize&#45;folders.mjs -->
<g id="node80" class="node">
<title>src/enrich/summarize/summarize&#45;folders.mjs</title>
<g id="a_node80"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/summarize-folders.mjs" xlink:title="summarize&#45;folders.mjs">
<path fill="#77eeaa" stroke="black" d="M1203.08,-2661.88C1203.08,-2661.88 1106.67,-2661.88 1106.67,-2661.88 1103.71,-2661.88 1100.75,-2658.92 1100.75,-2655.96 1100.75,-2655.96 1100.75,-2650.04 1100.75,-2650.04 1100.75,-2647.08 1103.71,-2644.12 1106.67,-2644.12 1106.67,-2644.12 1203.08,-2644.12 1203.08,-2644.12 1206.04,-2644.12 1209,-2647.08 1209,-2650.04 1209,-2650.04 1209,-2655.96 1209,-2655.96 1209,-2658.92 1206.04,-2661.88 1203.08,-2661.88"/>
<text xml:space="preserve" text-anchor="start" x="1108.75" y="-2649.32" font-family="Helvetica,sans-Serif" font-size="9.00">summarize&#45;folders.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;folders.mjs -->
<g id="edge110" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;folders.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1034,-2658.66C1034,-2654.99 1034,-2651.62 1034,-2651.62 1034,-2651.62 1091.42,-2651.62 1091.42,-2651.62"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1091.42,-2653.73 1097.42,-2651.63 1091.42,-2649.53 1091.42,-2653.73"/>
</g>
<!-- src/enrich/summarize/summarize&#45;modules.mjs -->
<g id="node81" class="node">
<title>src/enrich/summarize/summarize&#45;modules.mjs</title>
<g id="a_node81"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/summarize-modules.mjs" xlink:title="summarize&#45;modules.mjs">
<path fill="#77eeaa" stroke="black" d="M1206.83,-2691.88C1206.83,-2691.88 1102.92,-2691.88 1102.92,-2691.88 1099.96,-2691.88 1097,-2688.92 1097,-2685.96 1097,-2685.96 1097,-2680.04 1097,-2680.04 1097,-2677.08 1099.96,-2674.12 1102.92,-2674.12 1102.92,-2674.12 1206.83,-2674.12 1206.83,-2674.12 1209.79,-2674.12 1212.75,-2677.08 1212.75,-2680.04 1212.75,-2680.04 1212.75,-2685.96 1212.75,-2685.96 1212.75,-2688.92 1209.79,-2691.88 1206.83,-2691.88"/>
<text xml:space="preserve" text-anchor="start" x="1105" y="-2679.32" font-family="Helvetica,sans-Serif" font-size="9.00">summarize&#45;modules.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;modules.mjs -->
<g id="edge111" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;modules.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1034,-2677.34C1034,-2681.01 1034,-2684.38 1034,-2684.38 1034,-2684.38 1087.53,-2684.38 1087.53,-2684.38"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1087.53,-2686.48 1093.53,-2684.38 1087.53,-2682.28 1087.53,-2686.48"/>
</g>
<!-- src/enrich/summarize/summarize&#45;options.mjs -->
<g id="node82" class="node">
<title>src/enrich/summarize/summarize&#45;options.mjs</title>
<g id="a_node82"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/enrich/summarize/summarize-options.mjs" xlink:title="summarize&#45;options.mjs">
<path fill="#77eeaa" stroke="black" d="M1204.21,-2721.88C1204.21,-2721.88 1105.54,-2721.88 1105.54,-2721.88 1102.58,-2721.88 1099.62,-2718.92 1099.62,-2715.96 1099.62,-2715.96 1099.62,-2710.04 1099.62,-2710.04 1099.62,-2707.08 1102.58,-2704.12 1105.54,-2704.12 1105.54,-2704.12 1204.21,-2704.12 1204.21,-2704.12 1207.17,-2704.12 1210.12,-2707.08 1210.12,-2710.04 1210.12,-2710.04 1210.12,-2715.96 1210.12,-2715.96 1210.12,-2718.92 1207.17,-2721.88 1204.21,-2721.88"/>
<text xml:space="preserve" text-anchor="start" x="1107.62" y="-2709.32" font-family="Helvetica,sans-Serif" font-size="9.00">summarize&#45;options.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;options.mjs -->
<g id="edge112" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/enrich/summarize/summarize&#45;options.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1023,-2677.11C1023,-2690.26 1023,-2713 1023,-2713 1023,-2713 1090.3,-2713 1090.3,-2713"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1090.3,-2715.1 1096.3,-2713 1090.3,-2710.9 1090.3,-2715.1"/>
</g>
<!-- src/graph&#45;utl/compare.mjs -->
<g id="node83" class="node">
<title>src/graph&#45;utl/compare.mjs</title>
<g id="a_node83"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/compare.mjs" xlink:title="compare.mjs">
<path fill="#ffcccc" stroke="black" d="M1692.83,-2438.88C1692.83,-2438.88 1636.17,-2438.88 1636.17,-2438.88 1633.21,-2438.88 1630.25,-2435.92 1630.25,-2432.96 1630.25,-2432.96 1630.25,-2427.04 1630.25,-2427.04 1630.25,-2424.08 1633.21,-2421.12 1636.17,-2421.12 1636.17,-2421.12 1692.83,-2421.12 1692.83,-2421.12 1695.79,-2421.12 1698.75,-2424.08 1698.75,-2427.04 1698.75,-2427.04 1698.75,-2432.96 1698.75,-2432.96 1698.75,-2435.92 1695.79,-2438.88 1692.83,-2438.88"/>
<text xml:space="preserve" text-anchor="start" x="1638.25" y="-2426.32" font-family="Helvetica,sans-Serif" font-size="9.00">compare.mjs</text>
</a>
</g>
</g>
<!-- src/enrich/summarize/index.mjs&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge113" class="edge">
<title>src/enrich/summarize/index.mjs&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1001,-2658.77C1001,-2615.26 1001,-2432.62 1001,-2432.62 1001,-2432.62 1620.73,-2432.62 1620.73,-2432.62"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.73,-2434.73 1626.73,-2432.63 1620.73,-2430.53 1620.73,-2434.73"/>
</g>
<!-- src/enrich/summarize/summarize&#45;folders.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs -->
<g id="edge114" class="edge">
<title>src/enrich/summarize/summarize&#45;folders.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1209.39,-2653C1254.77,-2653 1312,-2653 1312,-2653 1312,-2653 1312,-2493.1 1312,-2493.1"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1314.1,-2493.1 1312,-2487.1 1309.9,-2493.1 1314.1,-2493.1"/>
</g>
<!-- src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge118" class="edge">
<title>src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1213,-2683.12C1282.62,-2683.12 1390,-2683.12 1390,-2683.12 1390,-2683.12 1390,-1842.88 1390,-1842.88 1390,-1842.88 1620.99,-1842.88 1620.99,-1842.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.99,-1844.98 1626.99,-1842.88 1620.99,-1840.78 1620.99,-1844.98"/>
</g>
<!-- src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/enrich/summarize/is&#45;same&#45;violation.mjs -->
<g id="edge115" class="edge">
<title>src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/enrich/summarize/is&#45;same&#45;violation.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M1213.19,-2686.12C1245.02,-2686.12 1278,-2686.12 1278,-2686.12 1278,-2686.12 1278,-2686.4 1278,-2686.4"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="1275.9,-2679.85 1278,-2685.85 1280.1,-2679.85 1275.9,-2679.85"/>
</g>
<!-- src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge116" class="edge">
<title>src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1213.12,-2680.12C1275.62,-2680.12 1366,-2680.12 1366,-2680.12 1366,-2680.12 1366,-2434.38 1366,-2434.38 1366,-2434.38 1620.94,-2434.38 1620.94,-2434.38"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.94,-2436.48 1626.94,-2434.38 1620.94,-2432.28 1620.94,-2436.48"/>
</g>
<!-- src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs -->
<g id="edge117" class="edge">
<title>src/enrich/summarize/summarize&#45;modules.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1213.2,-2677.12C1265.15,-2677.12 1333,-2677.12 1333,-2677.12 1333,-2677.12 1333,-2493.24 1333,-2493.24"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1335.1,-2493.24 1333,-2487.24 1330.9,-2493.24 1335.1,-2493.24"/>
</g>
<!-- src/extract/acorn/estree&#45;helpers.mjs -->
<g id="node85" class="node">
<title>src/extract/acorn/estree&#45;helpers.mjs</title>
<g id="a_node85"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/estree-helpers.mjs" xlink:title="estree&#45;helpers.mjs">
<path fill="#ccffcc" stroke="black" d="M1540.83,-1105.88C1540.83,-1105.88 1460.92,-1105.88 1460.92,-1105.88 1457.96,-1105.88 1455,-1102.92 1455,-1099.96 1455,-1099.96 1455,-1094.04 1455,-1094.04 1455,-1091.08 1457.96,-1088.12 1460.92,-1088.12 1460.92,-1088.12 1540.83,-1088.12 1540.83,-1088.12 1543.79,-1088.12 1546.75,-1091.08 1546.75,-1094.04 1546.75,-1094.04 1546.75,-1099.96 1546.75,-1099.96 1546.75,-1102.92 1543.79,-1105.88 1540.83,-1105.88"/>
<text xml:space="preserve" text-anchor="start" x="1463" y="-1093.33" font-family="Helvetica,sans-Serif" font-size="9.00">estree&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract&#45;amd&#45;deps.mjs -->
<g id="node86" class="node">
<title>src/extract/acorn/extract&#45;amd&#45;deps.mjs</title>
<g id="a_node86"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/extract-amd-deps.mjs" xlink:title="extract&#45;amd&#45;deps.mjs">
<path fill="#ccffcc" stroke="black" d="M1200.83,-1097.88C1200.83,-1097.88 1108.92,-1097.88 1108.92,-1097.88 1105.96,-1097.88 1103,-1094.92 1103,-1091.96 1103,-1091.96 1103,-1086.04 1103,-1086.04 1103,-1083.08 1105.96,-1080.12 1108.92,-1080.12 1108.92,-1080.12 1200.83,-1080.12 1200.83,-1080.12 1203.79,-1080.12 1206.75,-1083.08 1206.75,-1086.04 1206.75,-1086.04 1206.75,-1091.96 1206.75,-1091.96 1206.75,-1094.92 1203.79,-1097.88 1200.83,-1097.88"/>
<text xml:space="preserve" text-anchor="start" x="1111" y="-1085.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;amd&#45;deps.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract&#45;amd&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs -->
<g id="edge119" class="edge">
<title>src/extract/acorn/extract&#45;amd&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1207.05,-1093C1207.05,-1093 1445.63,-1093 1445.63,-1093"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1445.63,-1095.1 1451.63,-1093 1445.63,-1090.9 1445.63,-1095.1"/>
</g>
<!-- src/extract/acorn/extract&#45;cjs&#45;deps.mjs -->
<g id="node87" class="node">
<title>src/extract/acorn/extract&#45;cjs&#45;deps.mjs</title>
<g id="a_node87"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/extract-cjs-deps.mjs" xlink:title="extract&#45;cjs&#45;deps.mjs">
<path fill="#ccffcc" stroke="black" d="M1364.83,-1127.88C1364.83,-1127.88 1279.67,-1127.88 1279.67,-1127.88 1276.71,-1127.88 1273.75,-1124.92 1273.75,-1121.96 1273.75,-1121.96 1273.75,-1116.04 1273.75,-1116.04 1273.75,-1113.08 1276.71,-1110.12 1279.67,-1110.12 1279.67,-1110.12 1364.83,-1110.12 1364.83,-1110.12 1367.79,-1110.12 1370.75,-1113.08 1370.75,-1116.04 1370.75,-1116.04 1370.75,-1121.96 1370.75,-1121.96 1370.75,-1124.92 1367.79,-1127.88 1364.83,-1127.88"/>
<text xml:space="preserve" text-anchor="start" x="1281.75" y="-1115.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;cjs&#45;deps.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract&#45;amd&#45;deps.mjs&#45;&gt;src/extract/acorn/extract&#45;cjs&#45;deps.mjs -->
<g id="edge120" class="edge">
<title>src/extract/acorn/extract&#45;amd&#45;deps.mjs&#45;&gt;src/extract/acorn/extract&#45;cjs&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1201,-1098.23C1201,-1105.55 1201,-1114.56 1201,-1114.56 1201,-1114.56 1264.26,-1114.56 1264.26,-1114.56"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1264.26,-1116.66 1270.26,-1114.56 1264.26,-1112.46 1264.26,-1116.66"/>
</g>
<!-- src/extract/acorn/extract&#45;cjs&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs -->
<g id="edge121" class="edge">
<title>src/extract/acorn/extract&#45;cjs&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1322,-1109.64C1322,-1105.64 1322,-1101.88 1322,-1101.88 1322,-1101.88 1445.78,-1101.88 1445.78,-1101.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1445.78,-1103.98 1451.78,-1101.88 1445.78,-1099.78 1445.78,-1103.98"/>
</g>
<!-- src/extract/acorn/extract&#45;es6&#45;deps.mjs -->
<g id="node88" class="node">
<title>src/extract/acorn/extract&#45;es6&#45;deps.mjs</title>
<g id="a_node88"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/extract-es6-deps.mjs" xlink:title="extract&#45;es6&#45;deps.mjs">
<path fill="#ccffcc" stroke="black" d="M1366.71,-1083.88C1366.71,-1083.88 1277.79,-1083.88 1277.79,-1083.88 1274.83,-1083.88 1271.88,-1080.92 1271.88,-1077.96 1271.88,-1077.96 1271.88,-1072.04 1271.88,-1072.04 1271.88,-1069.08 1274.83,-1066.12 1277.79,-1066.12 1277.79,-1066.12 1366.71,-1066.12 1366.71,-1066.12 1369.67,-1066.12 1372.62,-1069.08 1372.62,-1072.04 1372.62,-1072.04 1372.62,-1077.96 1372.62,-1077.96 1372.62,-1080.92 1369.67,-1083.88 1366.71,-1083.88"/>
<text xml:space="preserve" text-anchor="start" x="1279.88" y="-1071.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;es6&#45;deps.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract&#45;es6&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs -->
<g id="edge122" class="edge">
<title>src/extract/acorn/extract&#45;es6&#45;deps.mjs&#45;&gt;src/extract/acorn/estree&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1372.9,-1075C1430.31,-1075 1516,-1075 1516,-1075 1516,-1075 1516,-1078.77 1516,-1078.77"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1513.9,-1078.77 1516,-1084.77 1518.1,-1078.77 1513.9,-1078.77"/>
</g>
<!-- src/extract/acorn/extract&#45;stats.mjs -->
<g id="node89" class="node">
<title>src/extract/acorn/extract&#45;stats.mjs</title>
<g id="a_node89"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/extract-stats.mjs" xlink:title="extract&#45;stats.mjs">
<path fill="#ccffcc" stroke="black" d="M1189.58,-1157.88C1189.58,-1157.88 1120.17,-1157.88 1120.17,-1157.88 1117.21,-1157.88 1114.25,-1154.92 1114.25,-1151.96 1114.25,-1151.96 1114.25,-1146.04 1114.25,-1146.04 1114.25,-1143.08 1117.21,-1140.12 1120.17,-1140.12 1120.17,-1140.12 1189.58,-1140.12 1189.58,-1140.12 1192.54,-1140.12 1195.5,-1143.08 1195.5,-1146.04 1195.5,-1146.04 1195.5,-1151.96 1195.5,-1151.96 1195.5,-1154.92 1192.54,-1157.88 1189.58,-1157.88"/>
<text xml:space="preserve" text-anchor="start" x="1122.25" y="-1145.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;stats.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract.mjs -->
<g id="node90" class="node">
<title>src/extract/acorn/extract.mjs</title>
<g id="a_node90"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/extract.mjs" xlink:title="extract.mjs">
<path fill="#ccffcc" stroke="black" d="M1041.33,-1157.88C1041.33,-1157.88 993.67,-1157.88 993.67,-1157.88 990.71,-1157.88 987.75,-1154.92 987.75,-1151.96 987.75,-1151.96 987.75,-1146.04 987.75,-1146.04 987.75,-1143.08 990.71,-1140.12 993.67,-1140.12 993.67,-1140.12 1041.33,-1140.12 1041.33,-1140.12 1044.29,-1140.12 1047.25,-1143.08 1047.25,-1146.04 1047.25,-1146.04 1047.25,-1151.96 1047.25,-1151.96 1047.25,-1154.92 1044.29,-1157.88 1041.33,-1157.88"/>
<text xml:space="preserve" text-anchor="start" x="995.75" y="-1145.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;amd&#45;deps.mjs -->
<g id="edge123" class="edge">
<title>src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;amd&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1047.71,-1146.04C1074.37,-1146.04 1109,-1146.04 1109,-1146.04 1109,-1146.04 1109,-1107.19 1109,-1107.19"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1111.1,-1107.19 1109,-1101.19 1106.9,-1107.19 1111.1,-1107.19"/>
</g>
<!-- src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;cjs&#45;deps.mjs -->
<g id="edge124" class="edge">
<title>src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;cjs&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1023,-1139.7C1023,-1135.74 1023,-1132 1023,-1132 1023,-1132 1283,-1132 1283,-1132 1283,-1132 1283,-1131.62 1283,-1131.62"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.1,-1137.2 1283,-1131.2 1280.9,-1137.2 1285.1,-1137.2"/>
</g>
<!-- src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;es6&#45;deps.mjs -->
<g id="edge125" class="edge">
<title>src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;es6&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1001,-1139.7C1001,-1119.44 1001,-1073.12 1001,-1073.12 1001,-1073.12 1262.67,-1073.12 1262.67,-1073.12"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1262.67,-1075.23 1268.67,-1073.13 1262.67,-1071.03 1262.67,-1075.23"/>
</g>
<!-- src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;stats.mjs -->
<g id="edge126" class="edge">
<title>src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/extract&#45;stats.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1047.65,-1151.96C1047.65,-1151.96 1104.83,-1151.96 1104.83,-1151.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1104.83,-1154.06 1110.83,-1151.96 1104.83,-1149.86 1104.83,-1154.06"/>
</g>
<!-- src/extract/acorn/parse.mjs -->
<g id="node91" class="node">
<title>src/extract/acorn/parse.mjs</title>
<g id="a_node91"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/acorn/parse.mjs" xlink:title="parse.mjs">
<path fill="#ccffcc" stroke="black" d="M1176.83,-1127.88C1176.83,-1127.88 1132.92,-1127.88 1132.92,-1127.88 1129.96,-1127.88 1127,-1124.92 1127,-1121.96 1127,-1121.96 1127,-1116.04 1127,-1116.04 1127,-1113.08 1129.96,-1110.12 1132.92,-1110.12 1132.92,-1110.12 1176.83,-1110.12 1176.83,-1110.12 1179.79,-1110.12 1182.75,-1113.08 1182.75,-1116.04 1182.75,-1116.04 1182.75,-1121.96 1182.75,-1121.96 1182.75,-1124.92 1179.79,-1127.88 1176.83,-1127.88"/>
<text xml:space="preserve" text-anchor="start" x="1135" y="-1115.33" font-family="Helvetica,sans-Serif" font-size="9.00">parse.mjs</text>
</a>
</g>
</g>
<!-- src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/parse.mjs -->
<g id="edge127" class="edge">
<title>src/extract/acorn/extract.mjs&#45;&gt;src/extract/acorn/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1012,-1139.84C1012,-1132 1012,-1121.96 1012,-1121.96 1012,-1121.96 1117.62,-1121.96 1117.62,-1121.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1117.62,-1124.06 1123.62,-1121.96 1117.62,-1119.86 1117.62,-1124.06"/>
</g>
<!-- src/extract/acorn/parse.mjs&#45;&gt;src/utl/get&#45;extension.mjs -->
<g id="edge129" class="edge">
<title>src/extract/acorn/parse.mjs&#45;&gt;src/utl/get&#45;extension.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1182.99,-1123.44C1202.87,-1123.44 1226,-1123.44 1226,-1123.44 1226,-1123.44 1226,-1723 1226,-1723 1226,-1723 1611.01,-1723 1611.01,-1723"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1611.01,-1725.1 1617.01,-1723 1611.01,-1720.9 1611.01,-1725.1"/>
</g>
<!-- src/extract/acorn/parse.mjs&#45;&gt;src/extract/transpile/index.mjs -->
<g id="edge128" class="edge">
<title>src/extract/acorn/parse.mjs&#45;&gt;src/extract/transpile/index.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1182.9,-1119C1203.89,-1119 1229,-1119 1229,-1119 1229,-1119 1229,-1390.04 1229,-1390.04 1229,-1390.04 1285.24,-1390.04 1285.24,-1390.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.24,-1392.14 1291.24,-1390.04 1285.24,-1387.94 1285.24,-1392.14"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/babel&#45;wrap.mjs -->
<g id="edge185" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/babel&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1350.16,-1388.56C1350.16,-1388.56 1451.87,-1388.56 1451.87,-1388.56"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1451.87,-1390.66 1457.87,-1388.56 1451.87,-1386.46 1451.87,-1390.66"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/coffeescript&#45;wrap.mjs -->
<g id="edge186" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/coffeescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1350.17,-1393C1389.64,-1393 1457,-1393 1457,-1393 1457,-1393 1457,-1404.81 1457,-1404.81"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1454.9,-1404.81 1457,-1410.81 1459.1,-1404.81 1454.9,-1404.81"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/javascript&#45;wrap.mjs -->
<g id="edge187" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/javascript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1350.21,-1397.44C1358.78,-1397.44 1366,-1397.44 1366,-1397.44 1366,-1397.44 1366,-1481.62 1366,-1481.62 1366,-1481.62 1444.3,-1481.62 1444.3,-1481.62"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1444.3,-1483.73 1450.3,-1481.63 1444.3,-1479.53 1444.3,-1483.73"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/livescript&#45;wrap.mjs -->
<g id="edge188" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/livescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.96,-1395.22C1371.94,-1395.22 1399,-1395.22 1399,-1395.22 1399,-1395.22 1399,-1450.04 1399,-1450.04 1399,-1450.04 1445.68,-1450.04 1445.68,-1450.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1445.68,-1452.14 1451.68,-1450.04 1445.68,-1447.94 1445.68,-1452.14"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/svelte&#45;wrap.mjs -->
<g id="edge189" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/svelte&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1322,-1383.64C1322,-1373.9 1322,-1360.04 1322,-1360.04 1322,-1360.04 1451.7,-1360.04 1451.7,-1360.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1451.7,-1362.14 1457.7,-1360.04 1451.7,-1357.94 1451.7,-1362.14"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/typescript&#45;wrap.mjs -->
<g id="edge190" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/typescript&#45;wrap.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1350,-1399.66C1356.21,-1399.66 1361,-1399.66 1361,-1399.66 1361,-1399.66 1361,-1511.88 1361,-1511.88 1361,-1511.88 1444.1,-1511.88 1444.1,-1511.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1444.1,-1513.98 1450.1,-1511.88 1444.1,-1509.78 1444.1,-1513.98"/>
</g>
<!-- src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/vue&#45;template&#45;wrap.cjs -->
<g id="edge191" class="edge">
<title>src/extract/transpile/index.mjs&#45;&gt;src/extract/transpile/vue&#45;template&#45;wrap.cjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1349.98,-1386.34C1388.36,-1386.34 1453,-1386.34 1453,-1386.34 1453,-1386.34 1453,-1351.32 1453,-1351.32"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1455.1,-1351.32 1453,-1345.32 1450.9,-1351.32 1455.1,-1351.32"/>
</g>
<!-- src/extract/clear&#45;caches.mjs -->
<g id="node93" class="node">
<title>src/extract/clear&#45;caches.mjs</title>
<g id="a_node93"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/clear-caches.mjs" xlink:title="clear&#45;caches.mjs">
<path fill="#ccffcc" stroke="black" d="M1054.08,-855.88C1054.08,-855.88 980.92,-855.88 980.92,-855.88 977.96,-855.88 975,-852.92 975,-849.96 975,-849.96 975,-844.04 975,-844.04 975,-841.08 977.96,-838.12 980.92,-838.12 980.92,-838.12 1054.08,-838.12 1054.08,-838.12 1057.04,-838.12 1060,-841.08 1060,-844.04 1060,-844.04 1060,-849.96 1060,-849.96 1060,-852.92 1057.04,-855.88 1054.08,-855.88"/>
<text xml:space="preserve" text-anchor="start" x="983" y="-843.33" font-family="Helvetica,sans-Serif" font-size="9.00">clear&#45;caches.mjs</text>
</a>
</g>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/tsc/parse.mjs -->
<g id="edge136" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/tsc/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1060.37,-851.44C1066.07,-851.44 1070,-851.44 1070,-851.44 1070,-851.44 1070,-1226.04 1070,-1226.04 1070,-1226.04 1117.59,-1226.04 1117.59,-1226.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1117.59,-1228.14 1123.59,-1226.04 1117.59,-1223.94 1117.59,-1228.14"/>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/resolve.mjs -->
<g id="edge134" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/resolve.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1060.26,-842.56C1176.57,-842.56 1490,-842.56 1490,-842.56 1490,-842.56 1490,-903.86 1490,-903.86"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1487.9,-903.86 1490,-909.86 1492.1,-903.86 1487.9,-903.86"/>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/acorn/parse.mjs -->
<g id="edge130" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/acorn/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1049,-856.26C1049,-903.57 1049,-1116.04 1049,-1116.04 1049,-1116.04 1117.48,-1116.04 1117.48,-1116.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1117.48,-1118.14 1123.48,-1116.04 1117.48,-1113.94 1117.48,-1118.14"/>
</g>
<!-- src/extract/resolve/external&#45;module&#45;helpers.mjs -->
<g id="node94" class="node">
<title>src/extract/resolve/external&#45;module&#45;helpers.mjs</title>
<g id="a_node94"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/external-module-helpers.mjs" xlink:title="external&#45;module&#45;helpers.mjs">
<path fill="#ccffcc" stroke="black" d="M1382.83,-949.88C1382.83,-949.88 1261.67,-949.88 1261.67,-949.88 1258.71,-949.88 1255.75,-946.92 1255.75,-943.96 1255.75,-943.96 1255.75,-938.04 1255.75,-938.04 1255.75,-935.08 1258.71,-932.12 1261.67,-932.12 1261.67,-932.12 1382.83,-932.12 1382.83,-932.12 1385.79,-932.12 1388.75,-935.08 1388.75,-938.04 1388.75,-938.04 1388.75,-943.96 1388.75,-943.96 1388.75,-946.92 1385.79,-949.88 1382.83,-949.88"/>
<text xml:space="preserve" text-anchor="start" x="1263.75" y="-937.33" font-family="Helvetica,sans-Serif" font-size="9.00">external&#45;module&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs -->
<g id="edge131" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1060.22,-847C1132.46,-847 1271,-847 1271,-847 1271,-847 1271,-922.62 1271,-922.62"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1268.9,-922.62 1271,-928.62 1273.1,-922.62 1268.9,-922.62"/>
</g>
<!-- src/extract/resolve/get&#45;manifest.mjs -->
<g id="node95" class="node">
<title>src/extract/resolve/get&#45;manifest.mjs</title>
<g id="a_node95"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/get-manifest.mjs" xlink:title="get&#45;manifest.mjs">
<path fill="#ccffcc" stroke="black" d="M1190.33,-1009.88C1190.33,-1009.88 1119.42,-1009.88 1119.42,-1009.88 1116.46,-1009.88 1113.5,-1006.92 1113.5,-1003.96 1113.5,-1003.96 1113.5,-998.04 1113.5,-998.04 1113.5,-995.08 1116.46,-992.12 1119.42,-992.12 1119.42,-992.12 1190.33,-992.12 1190.33,-992.12 1193.29,-992.12 1196.25,-995.08 1196.25,-998.04 1196.25,-998.04 1196.25,-1003.96 1196.25,-1003.96 1196.25,-1006.92 1193.29,-1009.88 1190.33,-1009.88"/>
<text xml:space="preserve" text-anchor="start" x="1121.5" y="-997.33" font-family="Helvetica,sans-Serif" font-size="9.00">get&#45;manifest.mjs</text>
</a>
</g>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/get&#45;manifest.mjs -->
<g id="edge132" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/get&#45;manifest.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1051,-856.11C1051,-889.02 1051,-999.88 1051,-999.88 1051,-999.88 1104.2,-999.88 1104.2,-999.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1104.2,-1001.98 1110.2,-999.88 1104.2,-997.78 1104.2,-1001.98"/>
</g>
<!-- src/extract/resolve/resolve&#45;amd.mjs -->
<g id="node96" class="node">
<title>src/extract/resolve/resolve&#45;amd.mjs</title>
<g id="a_node96"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/resolve-amd.mjs" xlink:title="resolve&#45;amd.mjs">
<path fill="#ccffcc" stroke="black" d="M1190.71,-889.88C1190.71,-889.88 1119.04,-889.88 1119.04,-889.88 1116.08,-889.88 1113.12,-886.92 1113.12,-883.96 1113.12,-883.96 1113.12,-878.04 1113.12,-878.04 1113.12,-875.08 1116.08,-872.12 1119.04,-872.12 1119.04,-872.12 1190.71,-872.12 1190.71,-872.12 1193.67,-872.12 1196.62,-875.08 1196.62,-878.04 1196.62,-878.04 1196.62,-883.96 1196.62,-883.96 1196.62,-886.92 1193.67,-889.88 1190.71,-889.88"/>
<text xml:space="preserve" text-anchor="start" x="1121.12" y="-877.33" font-family="Helvetica,sans-Serif" font-size="9.00">resolve&#45;amd.mjs</text>
</a>
</g>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/resolve&#45;amd.mjs -->
<g id="edge133" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/resolve/resolve&#45;amd.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1053,-856.15C1053,-865.3 1053,-878.04 1053,-878.04 1053,-878.04 1103.82,-878.04 1103.82,-878.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1103.82,-880.14 1109.82,-878.04 1103.82,-875.94 1103.82,-880.14"/>
</g>
<!-- src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/swc/parse.mjs -->
<g id="edge135" class="edge">
<title>src/extract/clear&#45;caches.mjs&#45;&gt;src/extract/swc/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M984,-856.27C984,-918.42 984,-1271.96 984,-1271.96 984,-1271.96 1463.69,-1271.96 1463.69,-1271.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1463.69,-1274.06 1469.69,-1271.96 1463.69,-1269.86 1463.69,-1274.06"/>
</g>
<!-- src/extract/resolve/external&#45;module&#45;helpers.mjs&#45;&gt;src/extract/resolve/resolve.mjs -->
<g id="edge156" class="edge">
<title>src/extract/resolve/external&#45;module&#45;helpers.mjs&#45;&gt;src/extract/resolve/resolve.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1373,-931.88C1373,-929.31 1373,-927.21 1373,-927.21 1373,-927.21 1460.24,-927.21 1460.24,-927.21"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1460.24,-929.31 1466.24,-927.21 1460.24,-925.11 1460.24,-929.31"/>
</g>
<!-- src/extract/resolve/module&#45;classifiers.mjs -->
<g id="node108" class="node">
<title>src/extract/resolve/module&#45;classifiers.mjs</title>
<g id="a_node108"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/module-classifiers.mjs" xlink:title="module&#45;classifiers.mjs">
<path fill="#ccffcc" stroke="black" d="M1548.33,-978.88C1548.33,-978.88 1453.42,-978.88 1453.42,-978.88 1450.46,-978.88 1447.5,-975.92 1447.5,-972.96 1447.5,-972.96 1447.5,-967.04 1447.5,-967.04 1447.5,-964.08 1450.46,-961.12 1453.42,-961.12 1453.42,-961.12 1548.33,-961.12 1548.33,-961.12 1551.29,-961.12 1554.25,-964.08 1554.25,-967.04 1554.25,-967.04 1554.25,-972.96 1554.25,-972.96 1554.25,-975.92 1551.29,-978.88 1548.33,-978.88"/>
<text xml:space="preserve" text-anchor="start" x="1455.5" y="-966.33" font-family="Helvetica,sans-Serif" font-size="9.00">module&#45;classifiers.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/external&#45;module&#45;helpers.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs -->
<g id="edge155" class="edge">
<title>src/extract/resolve/external&#45;module&#45;helpers.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1389.01,-941C1422.07,-941 1455,-941 1455,-941 1455,-941 1455,-951.8 1455,-951.8"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1452.9,-951.8 1455,-957.8 1457.1,-951.8 1452.9,-951.8"/>
</g>
<!-- src/extract/resolve/merge&#45;manifests.mjs -->
<g id="node109" class="node">
<title>src/extract/resolve/merge&#45;manifests.mjs</title>
<g id="a_node109"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/merge-manifests.mjs" xlink:title="merge&#45;manifests.mjs">
<path fill="#ccffcc" stroke="black" d="M1366.71,-1009.88C1366.71,-1009.88 1277.79,-1009.88 1277.79,-1009.88 1274.83,-1009.88 1271.88,-1006.92 1271.88,-1003.96 1271.88,-1003.96 1271.88,-998.04 1271.88,-998.04 1271.88,-995.08 1274.83,-992.12 1277.79,-992.12 1277.79,-992.12 1366.71,-992.12 1366.71,-992.12 1369.67,-992.12 1372.62,-995.08 1372.62,-998.04 1372.62,-998.04 1372.62,-1003.96 1372.62,-1003.96 1372.62,-1006.92 1369.67,-1009.88 1366.71,-1009.88"/>
<text xml:space="preserve" text-anchor="start" x="1279.88" y="-997.33" font-family="Helvetica,sans-Serif" font-size="9.00">merge&#45;manifests.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/get&#45;manifest.mjs&#45;&gt;src/extract/resolve/merge&#45;manifests.mjs -->
<g id="edge157" class="edge">
<title>src/extract/resolve/get&#45;manifest.mjs&#45;&gt;src/extract/resolve/merge&#45;manifests.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1196.68,-1001C1196.68,-1001 1262.4,-1001 1262.4,-1001"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1262.4,-1003.1 1268.4,-1001 1262.4,-998.9 1262.4,-1003.1"/>
</g>
<!-- src/extract/resolve/resolve&#45;amd.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge168" class="edge">
<title>src/extract/resolve/resolve&#45;amd.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1155,-890.2C1155,-893.53 1155,-896.5 1155,-896.5 1155,-896.5 1840,-896.5 1840,-896.5 1840,-896.5 1840,-1644.83 1840,-1644.83"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1837.9,-1644.83 1840,-1650.83 1842.1,-1644.83 1837.9,-1644.83"/>
</g>
<!-- src/extract/resolve/is&#45;built&#45;in.mjs -->
<g id="node112" class="node">
<title>src/extract/resolve/is&#45;built&#45;in.mjs</title>
<g id="a_node112"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/is-built-in.mjs" xlink:title="is&#45;built&#45;in.mjs">
<path fill="#ccffcc" stroke="black" d="M1351.33,-890.88C1351.33,-890.88 1293.17,-890.88 1293.17,-890.88 1290.21,-890.88 1287.25,-887.92 1287.25,-884.96 1287.25,-884.96 1287.25,-879.04 1287.25,-879.04 1287.25,-876.08 1290.21,-873.12 1293.17,-873.12 1293.17,-873.12 1351.33,-873.12 1351.33,-873.12 1354.29,-873.12 1357.25,-876.08 1357.25,-879.04 1357.25,-879.04 1357.25,-884.96 1357.25,-884.96 1357.25,-887.92 1354.29,-890.88 1351.33,-890.88"/>
<text xml:space="preserve" text-anchor="start" x="1295.25" y="-878.33" font-family="Helvetica,sans-Serif" font-size="9.00">is&#45;built&#45;in.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/resolve&#45;amd.mjs&#45;&gt;src/extract/resolve/is&#45;built&#45;in.mjs -->
<g id="edge167" class="edge">
<title>src/extract/resolve/resolve&#45;amd.mjs&#45;&gt;src/extract/resolve/is&#45;built&#45;in.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1197.11,-881.5C1197.11,-881.5 1277.79,-881.5 1277.79,-881.5"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1277.79,-883.6 1283.79,-881.5 1277.79,-879.4 1277.79,-883.6"/>
</g>
<!-- src/extract/swc/parse.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge182" class="edge">
<title>src/extract/swc/parse.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1529.25,-1274.38C1552.64,-1274.38 1582,-1274.38 1582,-1274.38 1582,-1274.38 1582,-1688.07 1582,-1688.07 1582,-1688.07 1620.01,-1688.07 1620.01,-1688.07"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.01,-1690.17 1626.01,-1688.07 1620.01,-1685.97 1620.01,-1690.17"/>
</g>
<!-- src/extract/extract&#45;dependencies.mjs -->
<g id="node98" class="node">
<title>src/extract/extract&#45;dependencies.mjs</title>
<g id="a_node98"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/extract-dependencies.mjs" xlink:title="extract&#45;dependencies.mjs">
<path fill="#ccffcc" stroke="black" d="M934.33,-1237.88C934.33,-1237.88 825.17,-1237.88 825.17,-1237.88 822.21,-1237.88 819.25,-1234.92 819.25,-1231.96 819.25,-1231.96 819.25,-1226.04 819.25,-1226.04 819.25,-1223.08 822.21,-1220.12 825.17,-1220.12 825.17,-1220.12 934.33,-1220.12 934.33,-1220.12 937.29,-1220.12 940.25,-1223.08 940.25,-1226.04 940.25,-1226.04 940.25,-1231.96 940.25,-1231.96 940.25,-1234.92 937.29,-1237.88 934.33,-1237.88"/>
<text xml:space="preserve" text-anchor="start" x="827.25" y="-1225.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;dependencies.mjs</text>
</a>
</g>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge142" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M880,-1238.35C880,-1316.34 880,-1855.96 880,-1855.96 880,-1855.96 1653,-1855.96 1653,-1855.96 1653,-1855.96 1653,-1855.58 1653,-1855.58"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1655.1,-1861.17 1653,-1855.17 1650.9,-1861.17 1655.1,-1861.17"/>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/acorn/extract.mjs -->
<g id="edge137" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/acorn/extract.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M932,-1219.82C932,-1198.81 932,-1149 932,-1149 932,-1149 978.57,-1149 978.57,-1149"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="978.57,-1151.1 984.57,-1149 978.57,-1146.9 978.57,-1151.1"/>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/helpers.mjs -->
<g id="edge138" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M923,-1219.97C923,-1215.45 923,-1210.94 923,-1210.94 923,-1210.94 1654,-1210.94 1654,-1210.94 1654,-1210.94 1654,-1163.2 1654,-1163.2"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1656.1,-1163.2 1654,-1157.2 1651.9,-1163.2 1656.1,-1163.2"/>
</g>
<!-- src/extract/resolve/index.mjs -->
<g id="node100" class="node">
<title>src/extract/resolve/index.mjs</title>
<g id="a_node100"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/index.mjs" xlink:title="index.mjs">
<path fill="#ccffcc" stroke="black" d="M1039.08,-994.88C1039.08,-994.88 995.92,-994.88 995.92,-994.88 992.96,-994.88 990,-991.92 990,-988.96 990,-988.96 990,-983.04 990,-983.04 990,-980.08 992.96,-977.12 995.92,-977.12 995.92,-977.12 1039.08,-977.12 1039.08,-977.12 1042.04,-977.12 1045,-980.08 1045,-983.04 1045,-983.04 1045,-988.96 1045,-988.96 1045,-991.92 1042.04,-994.88 1039.08,-994.88"/>
<text xml:space="preserve" text-anchor="start" x="998" y="-982.33" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/resolve/index.mjs -->
<g id="edge139" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/resolve/index.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M929,-1219.77C929,-1175.38 929,-986 929,-986 929,-986 980.96,-986 980.96,-986"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="980.96,-988.1 986.96,-986 980.96,-983.9 980.96,-988.1"/>
</g>
<!-- src/extract/swc/extract.mjs -->
<g id="node101" class="node">
<title>src/extract/swc/extract.mjs</title>
<g id="a_node101"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/swc/extract.mjs" xlink:title="extract.mjs">
<path fill="#ccffcc" stroke="black" d="M1346.08,-1266.88C1346.08,-1266.88 1298.42,-1266.88 1298.42,-1266.88 1295.46,-1266.88 1292.5,-1263.92 1292.5,-1260.96 1292.5,-1260.96 1292.5,-1255.04 1292.5,-1255.04 1292.5,-1252.08 1295.46,-1249.12 1298.42,-1249.12 1298.42,-1249.12 1346.08,-1249.12 1346.08,-1249.12 1349.04,-1249.12 1352,-1252.08 1352,-1255.04 1352,-1255.04 1352,-1260.96 1352,-1260.96 1352,-1263.92 1349.04,-1266.88 1346.08,-1266.88"/>
<text xml:space="preserve" text-anchor="start" x="1300.5" y="-1254.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract.mjs</text>
</a>
</g>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/swc/extract.mjs -->
<g id="edge140" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/swc/extract.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M926,-1219.83C926,-1218.23 926,-1217.06 926,-1217.06 926,-1217.06 1312,-1217.06 1312,-1217.06 1312,-1217.06 1312,-1239.89 1312,-1239.89"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1309.9,-1239.89 1312,-1245.89 1314.1,-1239.89 1309.9,-1239.89"/>
</g>
<!-- src/extract/tsc/extract.mjs -->
<g id="node102" class="node">
<title>src/extract/tsc/extract.mjs</title>
<g id="a_node102"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/tsc/extract.mjs" xlink:title="extract.mjs">
<path fill="#ccffcc" stroke="black" d="M1041.33,-1237.88C1041.33,-1237.88 993.67,-1237.88 993.67,-1237.88 990.71,-1237.88 987.75,-1234.92 987.75,-1231.96 987.75,-1231.96 987.75,-1226.04 987.75,-1226.04 987.75,-1223.08 990.71,-1220.12 993.67,-1220.12 993.67,-1220.12 1041.33,-1220.12 1041.33,-1220.12 1044.29,-1220.12 1047.25,-1223.08 1047.25,-1226.04 1047.25,-1226.04 1047.25,-1231.96 1047.25,-1231.96 1047.25,-1234.92 1044.29,-1237.88 1041.33,-1237.88"/>
<text xml:space="preserve" text-anchor="start" x="995.75" y="-1225.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract.mjs</text>
</a>
</g>
</g>
<!-- src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/tsc/extract.mjs -->
<g id="edge141" class="edge">
<title>src/extract/extract&#45;dependencies.mjs&#45;&gt;src/extract/tsc/extract.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M940.57,-1229C940.57,-1229 978.52,-1229 978.52,-1229"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="978.52,-1231.1 984.52,-1229 978.52,-1226.9 978.52,-1231.1"/>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/get&#45;manifest.mjs -->
<g id="edge159" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/get&#45;manifest.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1034,-995C1034,-999.86 1034,-1004.88 1034,-1004.88 1034,-1004.88 1104.25,-1004.88 1104.25,-1004.88"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1104.25,-1006.98 1110.25,-1004.88 1104.25,-1002.78 1104.25,-1006.98"/>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;amd.mjs -->
<g id="edge161" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;amd.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1004,-976.94C1004,-951.97 1004,-883.96 1004,-883.96 1004,-883.96 1103.82,-883.96 1103.82,-883.96"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1103.82,-886.06 1109.82,-883.96 1103.82,-881.86 1103.82,-886.06"/>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge164" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1045.24,-989.06C1184.1,-989.06 1797,-989.06 1797,-989.06 1797,-989.06 1797,-1644.96 1797,-1644.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1794.9,-1644.96 1797,-1650.96 1799.1,-1644.96 1794.9,-1644.96"/>
</g>
<!-- src/extract/resolve/determine&#45;dependency&#45;types.mjs -->
<g id="node107" class="node">
<title>src/extract/resolve/determine&#45;dependency&#45;types.mjs</title>
<g id="a_node107"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/determine-dependency-types.mjs" xlink:title="determine&#45;dependency&#45;types.mjs">
<path fill="#ccffcc" stroke="black" d="M1225.21,-979.88C1225.21,-979.88 1084.54,-979.88 1084.54,-979.88 1081.58,-979.88 1078.62,-976.92 1078.62,-973.96 1078.62,-973.96 1078.62,-968.04 1078.62,-968.04 1078.62,-965.08 1081.58,-962.12 1084.54,-962.12 1084.54,-962.12 1225.21,-962.12 1225.21,-962.12 1228.17,-962.12 1231.12,-965.08 1231.12,-968.04 1231.12,-968.04 1231.12,-973.96 1231.12,-973.96 1231.12,-976.92 1228.17,-979.88 1225.21,-979.88"/>
<text xml:space="preserve" text-anchor="start" x="1086.62" y="-967.33" font-family="Helvetica,sans-Serif" font-size="9.00">determine&#45;dependency&#45;types.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/determine&#45;dependency&#45;types.mjs -->
<g id="edge158" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/determine&#45;dependency&#45;types.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1045.32,-982.94C1063.54,-982.94 1084,-982.94 1084,-982.94 1084,-982.94 1084,-982.66 1084,-982.66"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1086.1,-989.2 1084,-983.2 1081.9,-989.2 1086.1,-989.2"/>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs -->
<g id="edge160" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1045.4,-986C1146.26,-986 1486,-986 1486,-986 1486,-986 1486,-985.31 1486,-985.31"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1488.1,-988.15 1486,-982.15 1483.9,-988.15 1488.1,-988.15"/>
</g>
<!-- src/extract/resolve/resolve&#45;cjs.mjs -->
<g id="node110" class="node">
<title>src/extract/resolve/resolve&#45;cjs.mjs</title>
<g id="a_node110"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/resolve-cjs.mjs" xlink:title="resolve&#45;cjs.mjs">
<path fill="#ccffcc" stroke="black" d="M1187.33,-919.88C1187.33,-919.88 1122.42,-919.88 1122.42,-919.88 1119.46,-919.88 1116.5,-916.92 1116.5,-913.96 1116.5,-913.96 1116.5,-908.04 1116.5,-908.04 1116.5,-905.08 1119.46,-902.12 1122.42,-902.12 1122.42,-902.12 1187.33,-902.12 1187.33,-902.12 1190.29,-902.12 1193.25,-905.08 1193.25,-908.04 1193.25,-908.04 1193.25,-913.96 1193.25,-913.96 1193.25,-916.92 1190.29,-919.88 1187.33,-919.88"/>
<text xml:space="preserve" text-anchor="start" x="1124.5" y="-907.33" font-family="Helvetica,sans-Serif" font-size="9.00">resolve&#45;cjs.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;cjs.mjs -->
<g id="edge162" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;cjs.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1017,-976.8C1017,-956.78 1017,-911 1017,-911 1017,-911 1107.08,-911 1107.08,-911"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1107.08,-913.1 1113.08,-911 1107.08,-908.9 1107.08,-913.1"/>
</g>
<!-- src/extract/resolve/resolve&#45;helpers.mjs -->
<g id="node111" class="node">
<title>src/extract/resolve/resolve&#45;helpers.mjs</title>
<g id="a_node111"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/resolve/resolve-helpers.mjs" xlink:title="resolve&#45;helpers.mjs">
<path fill="#ccffcc" stroke="black" d="M1197.08,-949.88C1197.08,-949.88 1112.67,-949.88 1112.67,-949.88 1109.71,-949.88 1106.75,-946.92 1106.75,-943.96 1106.75,-943.96 1106.75,-938.04 1106.75,-938.04 1106.75,-935.08 1109.71,-932.12 1112.67,-932.12 1112.67,-932.12 1197.08,-932.12 1197.08,-932.12 1200.04,-932.12 1203,-935.08 1203,-938.04 1203,-938.04 1203,-943.96 1203,-943.96 1203,-946.92 1200.04,-949.88 1197.08,-949.88"/>
<text xml:space="preserve" text-anchor="start" x="1114.75" y="-937.33" font-family="Helvetica,sans-Serif" font-size="9.00">resolve&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;helpers.mjs -->
<g id="edge163" class="edge">
<title>src/extract/resolve/index.mjs&#45;&gt;src/extract/resolve/resolve&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1031,-976.89C1031,-963.74 1031,-941 1031,-941 1031,-941 1097.24,-941 1097.24,-941"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1097.24,-943.1 1103.24,-941 1097.24,-938.9 1097.24,-943.1"/>
</g>
<!-- src/extract/swc/extract.mjs&#45;&gt;src/extract/swc/parse.mjs -->
<g id="edge181" class="edge">
<title>src/extract/swc/extract.mjs&#45;&gt;src/extract/swc/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1352.17,-1258C1403.05,-1258 1501,-1258 1501,-1258 1501,-1258 1501,-1258.58 1501,-1258.58"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1498.9,-1254.73 1501,-1260.73 1503.1,-1254.73 1498.9,-1254.73"/>
</g>
<!-- src/extract/swc/extract.mjs&#45;&gt;src/extract/helpers.mjs -->
<g id="edge179" class="edge">
<title>src/extract/swc/extract.mjs&#45;&gt;src/extract/helpers.mjs</title>
<g id="a_edge179"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1332,-1248.92C1332,-1222.41 1332,-1147 1332,-1147 1332,-1147 1623.59,-1147 1623.59,-1147"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1623.59,-1149.1 1629.59,-1147 1623.59,-1144.9 1623.59,-1149.1"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1380.71" y="-1138.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/extract/swc/extract&#45;swc&#45;deps.mjs -->
<g id="node114" class="node">
<title>src/extract/swc/extract&#45;swc&#45;deps.mjs</title>
<g id="a_node114"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/swc/extract-swc-deps.mjs" xlink:title="extract&#45;swc&#45;deps.mjs">
<path fill="#ccffcc" stroke="black" d="M1545.71,-1251.88C1545.71,-1251.88 1456.04,-1251.88 1456.04,-1251.88 1453.08,-1251.88 1450.12,-1248.92 1450.12,-1245.96 1450.12,-1245.96 1450.12,-1240.04 1450.12,-1240.04 1450.12,-1237.08 1453.08,-1234.12 1456.04,-1234.12 1456.04,-1234.12 1545.71,-1234.12 1545.71,-1234.12 1548.67,-1234.12 1551.62,-1237.08 1551.62,-1240.04 1551.62,-1240.04 1551.62,-1245.96 1551.62,-1245.96 1551.62,-1248.92 1548.67,-1251.88 1545.71,-1251.88"/>
<text xml:space="preserve" text-anchor="start" x="1458.12" y="-1239.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;swc&#45;deps.mjs</text>
</a>
</g>
</g>
<!-- src/extract/swc/extract.mjs&#45;&gt;src/extract/swc/extract&#45;swc&#45;deps.mjs -->
<g id="edge180" class="edge">
<title>src/extract/swc/extract.mjs&#45;&gt;src/extract/swc/extract&#45;swc&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1352.23,-1254.94C1393.29,-1254.94 1462,-1254.94 1462,-1254.94 1462,-1254.94 1462,-1254.66 1462,-1254.66"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1464.1,-1261.2 1462,-1255.2 1459.9,-1261.2 1464.1,-1261.2"/>
</g>
<!-- src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/parse.mjs -->
<g id="edge210" class="edge">
<title>src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/parse.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1047.65,-1229C1047.65,-1229 1117.65,-1229 1117.65,-1229"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1117.65,-1231.1 1123.65,-1229 1117.65,-1226.9 1117.65,-1231.1"/>
</g>
<!-- src/extract/tsc/extract.mjs&#45;&gt;src/extract/helpers.mjs -->
<g id="edge207" class="edge">
<title>src/extract/tsc/extract.mjs&#45;&gt;src/extract/helpers.mjs</title>
<g id="a_edge207"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M1003,-1219.76C1003,-1216.67 1003,-1214 1003,-1214 1003,-1214 1675,-1214 1675,-1214 1675,-1214 1675,-1163.33 1675,-1163.33"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1677.1,-1163.33 1675,-1157.33 1672.9,-1163.33 1677.1,-1163.33"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1315.33" y="-1205.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/extract/tsc/extract&#45;stats.mjs -->
<g id="node126" class="node">
<title>src/extract/tsc/extract&#45;stats.mjs</title>
<g id="a_node126"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/tsc/extract-stats.mjs" xlink:title="extract&#45;stats.mjs">
<path fill="#ccffcc" stroke="black" d="M1189.58,-1267.88C1189.58,-1267.88 1120.17,-1267.88 1120.17,-1267.88 1117.21,-1267.88 1114.25,-1264.92 1114.25,-1261.96 1114.25,-1261.96 1114.25,-1256.04 1114.25,-1256.04 1114.25,-1253.08 1117.21,-1250.12 1120.17,-1250.12 1120.17,-1250.12 1189.58,-1250.12 1189.58,-1250.12 1192.54,-1250.12 1195.5,-1253.08 1195.5,-1256.04 1195.5,-1256.04 1195.5,-1261.96 1195.5,-1261.96 1195.5,-1264.92 1192.54,-1267.88 1189.58,-1267.88"/>
<text xml:space="preserve" text-anchor="start" x="1122.25" y="-1255.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;stats.mjs</text>
</a>
</g>
</g>
<!-- src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/extract&#45;stats.mjs -->
<g id="edge208" class="edge">
<title>src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/extract&#45;stats.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1047.71,-1231.96C1078.26,-1231.96 1121,-1231.96 1121,-1231.96 1121,-1231.96 1121,-1240.82 1121,-1240.82"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1118.9,-1240.82 1121,-1246.82 1123.1,-1240.82 1118.9,-1240.82"/>
</g>
<!-- src/extract/tsc/extract&#45;typescript&#45;deps.mjs -->
<g id="node127" class="node">
<title>src/extract/tsc/extract&#45;typescript&#45;deps.mjs</title>
<g id="a_node127"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/tsc/extract-typescript-deps.mjs" xlink:title="extract&#45;typescript&#45;deps.mjs">
<path fill="#ccffcc" stroke="black" d="M1211.33,-1297.88C1211.33,-1297.88 1098.42,-1297.88 1098.42,-1297.88 1095.46,-1297.88 1092.5,-1294.92 1092.5,-1291.96 1092.5,-1291.96 1092.5,-1286.04 1092.5,-1286.04 1092.5,-1283.08 1095.46,-1280.12 1098.42,-1280.12 1098.42,-1280.12 1211.33,-1280.12 1211.33,-1280.12 1214.29,-1280.12 1217.25,-1283.08 1217.25,-1286.04 1217.25,-1286.04 1217.25,-1291.96 1217.25,-1291.96 1217.25,-1294.92 1214.29,-1297.88 1211.33,-1297.88"/>
<text xml:space="preserve" text-anchor="start" x="1100.5" y="-1285.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;typescript&#45;deps.mjs</text>
</a>
</g>
</g>
<!-- src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/extract&#45;typescript&#45;deps.mjs -->
<g id="edge209" class="edge">
<title>src/extract/tsc/extract.mjs&#45;&gt;src/extract/tsc/extract&#45;typescript&#45;deps.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1047.48,-1234.92C1070.36,-1234.92 1098,-1234.92 1098,-1234.92 1098,-1234.92 1098,-1271.04 1098,-1271.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1095.9,-1271.04 1098,-1277.04 1100.1,-1271.04 1095.9,-1271.04"/>
</g>
<!-- src/extract/extract&#45;stats.mjs -->
<g id="node103" class="node">
<title>src/extract/extract&#45;stats.mjs</title>
<g id="a_node103"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/extract-stats.mjs" xlink:title="extract&#45;stats.mjs">
<path fill="#ccffcc" stroke="black" d="M914.46,-1207.88C914.46,-1207.88 845.04,-1207.88 845.04,-1207.88 842.08,-1207.88 839.12,-1204.92 839.12,-1201.96 839.12,-1201.96 839.12,-1196.04 839.12,-1196.04 839.12,-1193.08 842.08,-1190.12 845.04,-1190.12 845.04,-1190.12 914.46,-1190.12 914.46,-1190.12 917.42,-1190.12 920.38,-1193.08 920.38,-1196.04 920.38,-1196.04 920.38,-1201.96 920.38,-1201.96 920.38,-1204.92 917.42,-1207.88 914.46,-1207.88"/>
<text xml:space="preserve" text-anchor="start" x="847.12" y="-1195.33" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;stats.mjs</text>
</a>
</g>
</g>
<!-- src/extract/extract&#45;stats.mjs&#45;&gt;src/extract/acorn/extract.mjs -->
<g id="edge143" class="edge">
<title>src/extract/extract&#45;stats.mjs&#45;&gt;src/extract/acorn/extract.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M920.56,-1196.04C961.02,-1196.04 1017,-1196.04 1017,-1196.04 1017,-1196.04 1017,-1167.1 1017,-1167.1"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1019.1,-1167.1 1017,-1161.1 1014.9,-1167.1 1019.1,-1167.1"/>
</g>
<!-- src/extract/extract&#45;stats.mjs&#45;&gt;src/extract/tsc/extract.mjs -->
<g id="edge144" class="edge">
<title>src/extract/extract&#45;stats.mjs&#45;&gt;src/extract/tsc/extract.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M920.55,-1201.96C965.65,-1201.96 1032,-1201.96 1032,-1201.96 1032,-1201.96 1032,-1210.82 1032,-1210.82"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1029.9,-1210.82 1032,-1216.82 1034.1,-1210.82 1029.9,-1210.82"/>
</g>
<!-- src/extract/gather&#45;initial&#45;sources.mjs -->
<g id="node104" class="node">
<title>src/extract/gather&#45;initial&#45;sources.mjs</title>
<g id="a_node104"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/gather-initial-sources.mjs" xlink:title="gather&#45;initial&#45;sources.mjs">
<path fill="#ccffcc" stroke="black" d="M1208.33,-1431.88C1208.33,-1431.88 1101.42,-1431.88 1101.42,-1431.88 1098.46,-1431.88 1095.5,-1428.92 1095.5,-1425.96 1095.5,-1425.96 1095.5,-1420.04 1095.5,-1420.04 1095.5,-1417.08 1098.46,-1414.12 1101.42,-1414.12 1101.42,-1414.12 1208.33,-1414.12 1208.33,-1414.12 1211.29,-1414.12 1214.25,-1417.08 1214.25,-1420.04 1214.25,-1420.04 1214.25,-1425.96 1214.25,-1425.96 1214.25,-1428.92 1211.29,-1431.88 1208.33,-1431.88"/>
<text xml:space="preserve" text-anchor="start" x="1103.5" y="-1419.33" font-family="Helvetica,sans-Serif" font-size="9.00">gather&#45;initial&#45;sources.mjs</text>
</a>
</g>
</g>
<!-- src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/extract/transpile/meta.mjs -->
<g id="edge145" class="edge">
<title>src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/extract/transpile/meta.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1214.36,-1420.04C1214.36,-1420.04 1285.78,-1420.04 1285.78,-1420.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1285.78,-1422.14 1291.78,-1420.04 1285.78,-1417.94 1285.78,-1422.14"/>
</g>
<!-- src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs -->
<g id="edge146" class="edge">
<title>src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1214.65,-1423C1220.89,-1423 1225,-1423 1225,-1423 1225,-1423 1225,-1811.62 1225,-1811.62 1225,-1811.62 1626,-1811.62 1626,-1811.62 1626,-1811.62 1626,-2351.75 1626,-2351.75"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1623.9,-2351.75 1626,-2357.75 1628.1,-2351.75 1623.9,-2351.75"/>
</g>
<!-- src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/utl/get&#45;extension.mjs -->
<g id="edge147" class="edge">
<title>src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/utl/get&#45;extension.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1173,-1432.07C1173,-1482.48 1173,-1725.96 1173,-1725.96 1173,-1725.96 1610.99,-1725.96 1610.99,-1725.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1610.99,-1728.06 1616.99,-1725.96 1610.99,-1723.86 1610.99,-1728.06"/>
</g>
<!-- src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge148" class="edge">
<title>src/extract/gather&#45;initial&#45;sources.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1136,-1432.14C1136,-1434.28 1136,-1435.96 1136,-1435.96 1136,-1435.96 1783,-1435.96 1783,-1435.96 1783,-1435.96 1783,-1644.79 1783,-1644.79"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1780.9,-1644.79 1783,-1650.79 1785.1,-1644.79 1780.9,-1644.79"/>
</g>
<!-- src/extract/index.mjs&#45;&gt;src/extract/clear&#45;caches.mjs -->
<g id="edge149" class="edge">
<title>src/extract/index.mjs&#45;&gt;src/extract/clear&#45;caches.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M719,-1219.93C719,-1162.09 719,-847 719,-847 719,-847 965.71,-847 965.71,-847"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="965.71,-849.1 971.71,-847 965.71,-844.9 965.71,-849.1"/>
</g>
<!-- src/extract/index.mjs&#45;&gt;src/extract/extract&#45;dependencies.mjs -->
<g id="edge150" class="edge">
<title>src/extract/index.mjs&#45;&gt;src/extract/extract&#45;dependencies.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M756.04,-1229C756.04,-1229 809.83,-1229 809.83,-1229"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="809.83,-1231.1 815.83,-1229 809.83,-1226.9 809.83,-1231.1"/>
</g>
<!-- src/extract/index.mjs&#45;&gt;src/extract/extract&#45;stats.mjs -->
<g id="edge151" class="edge">
<title>src/extract/index.mjs&#45;&gt;src/extract/extract&#45;stats.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M737,-1219.84C737,-1211.01 737,-1199 737,-1199 737,-1199 829.82,-1199 829.82,-1199"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="829.82,-1201.1 835.82,-1199 829.82,-1196.9 829.82,-1201.1"/>
</g>
<!-- src/extract/index.mjs&#45;&gt;src/extract/gather&#45;initial&#45;sources.mjs -->
<g id="edge152" class="edge">
<title>src/extract/index.mjs&#45;&gt;src/extract/gather&#45;initial&#45;sources.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M728,-1238.36C728,-1277.11 728,-1423 728,-1423 728,-1423 1086.04,-1423 1086.04,-1423"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1086.04,-1425.1 1092.04,-1423 1086.04,-1420.9 1086.04,-1425.1"/>
</g>
<!-- src/extract/resolve/determine&#45;dependency&#45;types.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs -->
<g id="edge153" class="edge">
<title>src/extract/resolve/determine&#45;dependency&#45;types.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1231.52,-970.5C1251.23,-970.5 1267,-970.5 1267,-970.5 1267,-970.5 1267,-959.36 1267,-959.36"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1269.1,-959.36 1267,-953.36 1264.9,-959.36 1269.1,-959.36"/>
</g>
<!-- src/extract/resolve/determine&#45;dependency&#45;types.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs -->
<g id="edge154" class="edge">
<title>src/extract/resolve/determine&#45;dependency&#45;types.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1231.23,-974.69C1231.23,-974.69 1438.23,-974.69 1438.23,-974.69"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1438.23,-976.79 1444.23,-974.69 1438.22,-972.59 1438.23,-976.79"/>
</g>
<!-- src/extract/resolve/module&#45;classifiers.mjs&#45;&gt;src/utl/get&#45;extension.mjs -->
<g id="edge166" class="edge">
<title>src/extract/resolve/module&#45;classifiers.mjs&#45;&gt;src/utl/get&#45;extension.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1554.62,-970C1559.7,-970 1563,-970 1563,-970 1563,-970 1563,-1717.08 1563,-1717.08 1563,-1717.08 1611.25,-1717.08 1611.25,-1717.08"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1611.25,-1719.18 1617.25,-1717.08 1611.25,-1714.98 1611.25,-1719.18"/>
</g>
<!-- src/extract/resolve/merge&#45;manifests.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge165" class="edge">
<title>src/extract/resolve/merge&#45;manifests.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1373.04,-1001C1442.6,-1001 1559,-1001 1559,-1001 1559,-1001 1559,-1839.88 1559,-1839.88 1559,-1839.88 1620.93,-1839.88 1620.93,-1839.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.93,-1841.98 1626.93,-1839.88 1620.93,-1837.78 1620.93,-1841.98"/>
</g>
<!-- src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/resolve.mjs -->
<g id="edge171" class="edge">
<title>src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/resolve.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1193.66,-908.73C1285.96,-908.73 1511,-908.73 1511,-908.73 1511,-908.73 1511,-909.12 1511,-909.12"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1508.9,-903.61 1511,-909.61 1513.1,-903.61 1508.9,-903.61"/>
</g>
<!-- src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs -->
<g id="edge172" class="edge">
<title>src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/utl/path&#45;to&#45;posix.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1193.37,-906.52C1335.97,-906.52 1826,-906.52 1826,-906.52 1826,-906.52 1826,-1644.68 1826,-1644.68"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1823.9,-1644.68 1826,-1650.68 1828.1,-1644.68 1823.9,-1644.68"/>
</g>
<!-- src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs -->
<g id="edge170" class="edge">
<title>src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1193.46,-910.92C1275.95,-910.92 1462,-910.92 1462,-910.92 1462,-910.92 1462,-951.74 1462,-951.74"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1459.9,-951.74 1462,-957.74 1464.1,-951.74 1459.9,-951.74"/>
</g>
<!-- src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/is&#45;built&#45;in.mjs -->
<g id="edge169" class="edge">
<title>src/extract/resolve/resolve&#45;cjs.mjs&#45;&gt;src/extract/resolve/is&#45;built&#45;in.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1193.64,-904.33C1243.01,-904.33 1322,-904.33 1322,-904.33 1322,-904.33 1322,-900.37 1322,-900.37"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1324.1,-900.37 1322,-894.37 1319.9,-900.37 1324.1,-900.37"/>
</g>
<!-- src/extract/resolve/resolve&#45;helpers.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs -->
<g id="edge173" class="edge">
<title>src/extract/resolve/resolve&#45;helpers.mjs&#45;&gt;src/extract/resolve/external&#45;module&#45;helpers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1203.29,-938.04C1203.29,-938.04 1246.24,-938.04 1246.24,-938.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1246.24,-940.14 1252.24,-938.04 1246.24,-935.94 1246.24,-940.14"/>
</g>
<!-- src/extract/resolve/resolve&#45;helpers.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs -->
<g id="edge174" class="edge">
<title>src/extract/resolve/resolve&#45;helpers.mjs&#45;&gt;src/extract/resolve/module&#45;classifiers.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1203.28,-943.96C1223.33,-943.96 1242,-943.96 1242,-943.96 1242,-943.96 1242,-966.31 1242,-966.31 1242,-966.31 1438.21,-966.31 1438.21,-966.31"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1438.21,-968.41 1444.21,-966.31 1438.21,-964.21 1438.21,-968.41"/>
</g>
<!-- src/extract/swc/dependency&#45;visitor.mjs -->
<g id="node113" class="node">
<title>src/extract/swc/dependency&#45;visitor.mjs</title>
<g id="a_node113"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/swc/dependency-visitor.mjs" xlink:title="dependency&#45;visitor.mjs">
<path fill="#ccffcc" stroke="black" d="M1713.83,-1266.88C1713.83,-1266.88 1615.17,-1266.88 1615.17,-1266.88 1612.21,-1266.88 1609.25,-1263.92 1609.25,-1260.96 1609.25,-1260.96 1609.25,-1255.04 1609.25,-1255.04 1609.25,-1252.08 1612.21,-1249.12 1615.17,-1249.12 1615.17,-1249.12 1713.83,-1249.12 1713.83,-1249.12 1716.79,-1249.12 1719.75,-1252.08 1719.75,-1255.04 1719.75,-1255.04 1719.75,-1260.96 1719.75,-1260.96 1719.75,-1263.92 1716.79,-1266.88 1713.83,-1266.88"/>
<text xml:space="preserve" text-anchor="start" x="1617.25" y="-1254.33" font-family="Helvetica,sans-Serif" font-size="9.00">dependency&#45;visitor.mjs</text>
</a>
</g>
</g>
<!-- src/extract/swc/dependency&#45;visitor.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge177" class="edge">
<title>src/extract/swc/dependency&#45;visitor.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1720.1,-1258C1722.55,-1258 1724,-1258 1724,-1258 1724,-1258 1724,-1690.04 1724,-1690.04 1724,-1690.04 1709.17,-1690.04 1709.17,-1690.04"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1709.17,-1687.94 1703.17,-1690.04 1709.17,-1692.14 1709.17,-1687.94"/>
</g>
<!-- src/extract/swc/extract&#45;swc&#45;deps.mjs&#45;&gt;src/extract/swc/dependency&#45;visitor.mjs -->
<g id="edge178" class="edge">
<title>src/extract/swc/extract&#45;swc&#45;deps.mjs&#45;&gt;src/extract/swc/dependency&#45;visitor.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1540,-1252.03C1540,-1256.55 1540,-1261.06 1540,-1261.06 1540,-1261.06 1599.78,-1261.06 1599.78,-1261.06"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1599.78,-1263.16 1605.78,-1261.06 1599.78,-1258.96 1599.78,-1263.16"/>
</g>
<!-- src/extract/transpile/babel&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge183" class="edge">
<title>src/extract/transpile/babel&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1540.54,-1393C1558.17,-1393 1575,-1393 1575,-1393 1575,-1393 1575,-1693.99 1575,-1693.99 1575,-1693.99 1619.84,-1693.99 1619.84,-1693.99"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.84,-1696.09 1625.84,-1693.99 1619.84,-1691.89 1619.84,-1696.09"/>
</g>
<!-- src/extract/transpile/coffeescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge184" class="edge">
<title>src/extract/transpile/coffeescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1552.19,-1423C1563.4,-1423 1572,-1423 1572,-1423 1572,-1423 1572,-1695.96 1572,-1695.96 1572,-1695.96 1619.71,-1695.96 1619.71,-1695.96"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.71,-1698.06 1625.71,-1695.96 1619.71,-1693.86 1619.71,-1698.06"/>
</g>
<!-- src/extract/transpile/livescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge192" class="edge">
<title>src/extract/transpile/livescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1546.98,-1453C1559.66,-1453 1570,-1453 1570,-1453 1570,-1453 1570,-1697.93 1570,-1697.93 1570,-1697.93 1619.75,-1697.93 1619.75,-1697.93"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.75,-1700.03 1625.75,-1697.93 1619.75,-1695.83 1619.75,-1700.03"/>
</g>
<!-- src/extract/transpile/svelte&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge203" class="edge">
<title>src/extract/transpile/svelte&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1541.17,-1365.96C1559.43,-1365.96 1577,-1365.96 1577,-1365.96 1577,-1365.96 1577,-1692.01 1577,-1692.01 1577,-1692.01 1619.63,-1692.01 1619.63,-1692.01"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.63,-1694.11 1625.63,-1692.01 1619.63,-1689.91 1619.63,-1694.11"/>
</g>
<!-- src/extract/transpile/svelte&#45;preprocess.mjs -->
<g id="node124" class="node">
<title>src/extract/transpile/svelte&#45;preprocess.mjs</title>
<g id="a_node124"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/svelte-preprocess.mjs" xlink:title="svelte&#45;preprocess.mjs">
<path fill="#ccffcc" stroke="black" d="M1711.21,-1371.88C1711.21,-1371.88 1617.79,-1371.88 1617.79,-1371.88 1614.83,-1371.88 1611.88,-1368.92 1611.88,-1365.96 1611.88,-1365.96 1611.88,-1360.04 1611.88,-1360.04 1611.88,-1357.08 1614.83,-1354.12 1617.79,-1354.12 1617.79,-1354.12 1711.21,-1354.12 1711.21,-1354.12 1714.17,-1354.12 1717.12,-1357.08 1717.12,-1360.04 1717.12,-1360.04 1717.12,-1365.96 1717.12,-1365.96 1717.12,-1368.92 1714.17,-1371.88 1711.21,-1371.88"/>
<text xml:space="preserve" text-anchor="start" x="1619.88" y="-1359.33" font-family="Helvetica,sans-Serif" font-size="9.00">svelte&#45;preprocess.mjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/svelte&#45;wrap.mjs&#45;&gt;src/extract/transpile/svelte&#45;preprocess.mjs -->
<g id="edge202" class="edge">
<title>src/extract/transpile/svelte&#45;wrap.mjs&#45;&gt;src/extract/transpile/svelte&#45;preprocess.mjs</title>
<path fill="none" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" d="M1540.9,-1360.04C1540.9,-1360.04 1602.57,-1360.04 1602.57,-1360.04"/>
<polygon fill="#007700" fill-opacity="0.466667" stroke="#007700" stroke-width="2" stroke-opacity="0.466667" points="1602.57,-1362.14 1608.57,-1360.04 1602.57,-1357.94 1602.57,-1362.14"/>
</g>
<!-- src/extract/transpile/typescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge204" class="edge">
<title>src/extract/transpile/typescript&#45;wrap.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1548.58,-1513C1559.52,-1513 1568,-1513 1568,-1513 1568,-1513 1568,-1699.9 1568,-1699.9 1568,-1699.9 1619.81,-1699.9 1619.81,-1699.9"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.81,-1702 1625.81,-1699.9 1619.81,-1697.8 1619.81,-1702"/>
</g>
<!-- src/utl/try&#45;require.cjs -->
<g id="node125" class="node">
<title>src/utl/try&#45;require.cjs</title>
<g id="a_node125"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/try-require.cjs" xlink:title="utl&#45;module&#45;not&#45;shared&#45;enough">
<path fill="#cccccc" stroke="blue" d="M1694.33,-1671.88C1694.33,-1671.88 1634.67,-1671.88 1634.67,-1671.88 1631.71,-1671.88 1628.75,-1668.92 1628.75,-1665.96 1628.75,-1665.96 1628.75,-1660.04 1628.75,-1660.04 1628.75,-1657.08 1631.71,-1654.12 1634.67,-1654.12 1634.67,-1654.12 1694.33,-1654.12 1694.33,-1654.12 1697.29,-1654.12 1700.25,-1657.08 1700.25,-1660.04 1700.25,-1660.04 1700.25,-1665.96 1700.25,-1665.96 1700.25,-1668.92 1697.29,-1671.88 1694.33,-1671.88"/>
<text xml:space="preserve" text-anchor="start" x="1636.75" y="-1659.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">try&#45;require.cjs</text>
</a>
</g>
</g>
<!-- src/extract/transpile/vue&#45;template&#45;wrap.cjs&#45;&gt;src/utl/try&#45;require.cjs -->
<g id="edge205" class="edge">
<title>src/extract/transpile/vue&#45;template&#45;wrap.cjs&#45;&gt;src/utl/try&#45;require.cjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1554.3,-1333C1571.41,-1333 1586,-1333 1586,-1333 1586,-1333 1586,-1663 1586,-1663 1586,-1663 1619.44,-1663 1619.44,-1663"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.44,-1665.1 1625.44,-1663 1619.44,-1660.9 1619.44,-1665.1"/>
</g>
<!-- src/extract/transpile/meta.d.ts -->
<g id="node122" class="node">
<title>src/extract/transpile/meta.d.ts</title>
<g id="a_node122"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/extract/transpile/meta.d.ts" xlink:title="meta.d.ts">
<path fill="#ccffcc" stroke="black" d="M1343.33,-1506.88C1343.33,-1506.88 1301.17,-1506.88 1301.17,-1506.88 1298.21,-1506.88 1295.25,-1503.92 1295.25,-1500.96 1295.25,-1500.96 1295.25,-1495.04 1295.25,-1495.04 1295.25,-1492.08 1298.21,-1489.12 1301.17,-1489.12 1301.17,-1489.12 1343.33,-1489.12 1343.33,-1489.12 1346.29,-1489.12 1349.25,-1492.08 1349.25,-1495.04 1349.25,-1495.04 1349.25,-1500.96 1349.25,-1500.96 1349.25,-1503.92 1346.29,-1506.88 1343.33,-1506.88"/>
<text xml:space="preserve" text-anchor="start" x="1303.88" y="-1494.33" font-family="Helvetica,sans-Serif" font-size="9.00">meta.d.ts</text>
</a>
</g>
</g>
<!-- src/utl/try&#45;require.cjs&#45;&gt;src/utl/extract&#45;root&#45;module&#45;name.cjs -->
<g id="edge285" class="edge">
<title>src/utl/try&#45;require.cjs&#45;&gt;src/utl/extract&#45;root&#45;module&#45;name.cjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1700.66,-1660.04C1726.24,-1660.04 1756,-1660.04 1756,-1660.04 1756,-1660.04 1756,-1674.62 1756,-1674.62"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1753.9,-1674.62 1756,-1680.62 1758.1,-1674.62 1753.9,-1674.62"/>
</g>
<!-- src/extract/tsc/extract&#45;typescript&#45;deps.mjs&#45;&gt;src/utl/try&#45;import.mjs -->
<g id="edge206" class="edge">
<title>src/extract/tsc/extract&#45;typescript&#45;deps.mjs&#45;&gt;src/utl/try&#45;import.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1217.46,-1289.88C1335.43,-1289.88 1579,-1289.88 1579,-1289.88 1579,-1289.88 1579,-1690.04 1579,-1690.04 1579,-1690.04 1619.71,-1690.04 1619.71,-1690.04"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.71,-1692.14 1625.71,-1690.04 1619.71,-1687.94 1619.71,-1692.14"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs -->
<g id="node128" class="node">
<title>src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs</title>
<g id="a_node128"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/consolidate-module-dependencies.mjs" xlink:title="consolidate&#45;module&#45;dependencies.mjs">
<path fill="#ffcccc" stroke="black" d="M1582.46,-2368.88C1582.46,-2368.88 1419.29,-2368.88 1419.29,-2368.88 1416.33,-2368.88 1413.38,-2365.92 1413.38,-2362.96 1413.38,-2362.96 1413.38,-2357.04 1413.38,-2357.04 1413.38,-2354.08 1416.33,-2351.12 1419.29,-2351.12 1419.29,-2351.12 1582.46,-2351.12 1582.46,-2351.12 1585.42,-2351.12 1588.38,-2354.08 1588.38,-2357.04 1588.38,-2357.04 1588.38,-2362.96 1588.38,-2362.96 1588.38,-2365.92 1585.42,-2368.88 1582.46,-2368.88"/>
<text xml:space="preserve" text-anchor="start" x="1421.38" y="-2356.32" font-family="Helvetica,sans-Serif" font-size="9.00">consolidate&#45;module&#45;dependencies.mjs</text>
</a>
</g>
</g>
<!-- src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge217" class="edge">
<title>src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1566,-2351.04C1566,-2282.51 1566,-1843.88 1566,-1843.88 1566,-1843.88 1620.75,-1843.88 1620.75,-1843.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.75,-1845.98 1626.75,-1843.88 1620.75,-1841.78 1620.75,-1845.98"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge216" class="edge">
<title>src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1580,-2369.12C1580,-2387.16 1580,-2425.62 1580,-2425.62 1580,-2425.62 1621.1,-2425.62 1621.1,-2425.62"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1621.1,-2427.73 1627.1,-2425.63 1621.1,-2423.53 1621.1,-2427.73"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;modules.mjs -->
<g id="node129" class="node">
<title>src/graph&#45;utl/consolidate&#45;modules.mjs</title>
<g id="a_node129"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/consolidate-modules.mjs" xlink:title="consolidate&#45;modules.mjs">
<path fill="#ffcccc" stroke="black" d="M1553.96,-2410.88C1553.96,-2410.88 1447.79,-2410.88 1447.79,-2410.88 1444.83,-2410.88 1441.88,-2407.92 1441.88,-2404.96 1441.88,-2404.96 1441.88,-2399.04 1441.88,-2399.04 1441.88,-2396.08 1444.83,-2393.12 1447.79,-2393.12 1447.79,-2393.12 1553.96,-2393.12 1553.96,-2393.12 1556.92,-2393.12 1559.88,-2396.08 1559.88,-2399.04 1559.88,-2399.04 1559.88,-2404.96 1559.88,-2404.96 1559.88,-2407.92 1556.92,-2410.88 1553.96,-2410.88"/>
<text xml:space="preserve" text-anchor="start" x="1449.88" y="-2398.32" font-family="Helvetica,sans-Serif" font-size="9.00">consolidate&#45;modules.mjs</text>
</a>
</g>
</g>
<!-- src/graph&#45;utl/consolidate&#45;modules.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge219" class="edge">
<title>src/graph&#45;utl/consolidate&#45;modules.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1560.26,-2402C1578.09,-2402 1593,-2402 1593,-2402 1593,-2402 1593,-1844.88 1593,-1844.88 1593,-1844.88 1620.98,-1844.88 1620.98,-1844.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1620.98,-1846.98 1626.98,-1844.88 1620.98,-1842.78 1620.98,-1846.98"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;modules.mjs&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge218" class="edge">
<title>src/graph&#45;utl/consolidate&#45;modules.mjs&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1549,-2411.16C1549,-2418.43 1549,-2427.38 1549,-2427.38 1549,-2427.38 1620.82,-2427.38 1620.82,-2427.38"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.82,-2429.48 1626.82,-2427.38 1620.82,-2425.28 1620.82,-2429.48"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs -->
<g id="node130" class="node">
<title>src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs</title>
<g id="a_node130"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/consolidate-to-folder.mjs" xlink:title="consolidate&#45;to&#45;folder.mjs">
<path fill="#ffcccc" stroke="black" d="M1374.58,-2363.88C1374.58,-2363.88 1269.92,-2363.88 1269.92,-2363.88 1266.96,-2363.88 1264,-2360.92 1264,-2357.96 1264,-2357.96 1264,-2352.04 1264,-2352.04 1264,-2349.08 1266.96,-2346.12 1269.92,-2346.12 1269.92,-2346.12 1374.58,-2346.12 1374.58,-2346.12 1377.54,-2346.12 1380.5,-2349.08 1380.5,-2352.04 1380.5,-2352.04 1380.5,-2357.96 1380.5,-2357.96 1380.5,-2360.92 1377.54,-2363.88 1374.58,-2363.88"/>
<text xml:space="preserve" text-anchor="start" x="1272" y="-2351.32" font-family="Helvetica,sans-Serif" font-size="9.00">consolidate&#45;to&#45;folder.mjs</text>
</a>
</g>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs -->
<g id="edge220" class="edge">
<title>src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1380.74,-2355.38C1380.74,-2355.38 1404.08,-2355.38 1404.08,-2355.38"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1404.08,-2357.48 1410.08,-2355.38 1404.08,-2353.28 1404.08,-2357.48"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;modules.mjs -->
<g id="edge221" class="edge">
<title>src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;modules.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1380.59,-2359.62C1396.29,-2359.62 1409,-2359.62 1409,-2359.62 1409,-2359.62 1409,-2397.88 1409,-2397.88 1409,-2397.88 1432.36,-2397.88 1432.36,-2397.88"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1432.36,-2399.98 1438.36,-2397.88 1432.36,-2395.78 1432.36,-2399.98"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs -->
<g id="node131" class="node">
<title>src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs</title>
<g id="a_node131"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/consolidate-to-pattern.mjs" xlink:title="consolidate&#45;to&#45;pattern.mjs">
<path fill="#ffcccc" stroke="black" d="M1377.21,-2423.88C1377.21,-2423.88 1267.29,-2423.88 1267.29,-2423.88 1264.33,-2423.88 1261.38,-2420.92 1261.38,-2417.96 1261.38,-2417.96 1261.38,-2412.04 1261.38,-2412.04 1261.38,-2409.08 1264.33,-2406.12 1267.29,-2406.12 1267.29,-2406.12 1377.21,-2406.12 1377.21,-2406.12 1380.17,-2406.12 1383.12,-2409.08 1383.12,-2412.04 1383.12,-2412.04 1383.12,-2417.96 1383.12,-2417.96 1383.12,-2420.92 1380.17,-2423.88 1377.21,-2423.88"/>
<text xml:space="preserve" text-anchor="start" x="1269.38" y="-2411.32" font-family="Helvetica,sans-Serif" font-size="9.00">consolidate&#45;to&#45;pattern.mjs</text>
</a>
</g>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs -->
<g id="edge222" class="edge">
<title>src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;module&#45;dependencies.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1383.39,-2414.29C1403.59,-2414.29 1421,-2414.29 1421,-2414.29 1421,-2414.29 1421,-2377.99 1421,-2377.99"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1423.1,-2377.99 1421,-2371.99 1418.9,-2377.99 1423.1,-2377.99"/>
</g>
<!-- src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;modules.mjs -->
<g id="edge223" class="edge">
<title>src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;modules.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1383.41,-2417.71C1417.44,-2417.71 1453,-2417.71 1453,-2417.71 1453,-2417.71 1453,-2417.07 1453,-2417.07"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1455.1,-2420.35 1453,-2414.35 1450.9,-2420.35 1455.1,-2420.35"/>
</g>
<!-- src/graph&#45;utl/filter&#45;bank.mjs -->
<g id="node132" class="node">
<title>src/graph&#45;utl/filter&#45;bank.mjs</title>
<g id="a_node132"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/filter-bank.mjs" xlink:title="filter&#45;bank.mjs">
<path fill="#ffcccc" stroke="black" d="M1352.83,-2453.88C1352.83,-2453.88 1291.67,-2453.88 1291.67,-2453.88 1288.71,-2453.88 1285.75,-2450.92 1285.75,-2447.96 1285.75,-2447.96 1285.75,-2442.04 1285.75,-2442.04 1285.75,-2439.08 1288.71,-2436.12 1291.67,-2436.12 1291.67,-2436.12 1352.83,-2436.12 1352.83,-2436.12 1355.79,-2436.12 1358.75,-2439.08 1358.75,-2442.04 1358.75,-2442.04 1358.75,-2447.96 1358.75,-2447.96 1358.75,-2450.92 1355.79,-2453.88 1352.83,-2453.88"/>
<text xml:space="preserve" text-anchor="start" x="1293.75" y="-2441.32" font-family="Helvetica,sans-Serif" font-size="9.00">filter&#45;bank.mjs</text>
</a>
</g>
</g>
<!-- src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs -->
<g id="edge226" class="edge">
<title>src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/match&#45;facade.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1359.07,-2442.62C1439.75,-2442.62 1625,-2442.62 1625,-2442.62 1625,-2442.62 1625,-2388.23 1625,-2388.23"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1627.1,-2388.23 1625,-2382.23 1622.9,-2388.23 1627.1,-2388.23"/>
</g>
<!-- src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs -->
<g id="edge225" class="edge">
<title>src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/indexed&#45;module&#45;graph.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1359.21,-2446.38C1435.86,-2446.38 1605,-2446.38 1605,-2446.38 1605,-2446.38 1605,-2456.6 1605,-2456.6"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1602.9,-2456.6 1605,-2462.6 1607.1,-2456.6 1602.9,-2456.6"/>
</g>
<!-- src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/add&#45;focus.mjs -->
<g id="edge224" class="edge">
<title>src/graph&#45;utl/filter&#45;bank.mjs&#45;&gt;src/graph&#45;utl/add&#45;focus.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1358.85,-2450.12C1411.15,-2450.12 1501,-2450.12 1501,-2450.12 1501,-2450.12 1501,-2454.67 1501,-2454.67"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1498.9,-2454.67 1501,-2460.67 1503.1,-2454.67 1498.9,-2454.67"/>
</g>
<!-- src/graph&#45;utl/strip&#45;self&#45;transitions.mjs -->
<g id="node133" class="node">
<title>src/graph&#45;utl/strip&#45;self&#45;transitions.mjs</title>
<g id="a_node133"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/graph-utl/strip-self-transitions.mjs" xlink:title="strip&#45;self&#45;transitions.mjs">
<path fill="#ffcccc" stroke="black" d="M1372.33,-2393.88C1372.33,-2393.88 1272.17,-2393.88 1272.17,-2393.88 1269.21,-2393.88 1266.25,-2390.92 1266.25,-2387.96 1266.25,-2387.96 1266.25,-2382.04 1266.25,-2382.04 1266.25,-2379.08 1269.21,-2376.12 1272.17,-2376.12 1272.17,-2376.12 1372.33,-2376.12 1372.33,-2376.12 1375.29,-2376.12 1378.25,-2379.08 1378.25,-2382.04 1378.25,-2382.04 1378.25,-2387.96 1378.25,-2387.96 1378.25,-2390.92 1375.29,-2393.88 1372.33,-2393.88"/>
<text xml:space="preserve" text-anchor="start" x="1274.25" y="-2381.32" font-family="Helvetica,sans-Serif" font-size="9.00">strip&#45;self&#45;transitions.mjs</text>
</a>
</g>
</g>
<!-- src/report/index.mjs -->
<g id="node143" class="node">
<title>src/report/index.mjs</title>
<g id="a_node143"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/index.mjs" xlink:title="index.mjs">
<path fill="#ffccff" stroke="black" d="M1039.08,-2125.88C1039.08,-2125.88 995.92,-2125.88 995.92,-2125.88 992.96,-2125.88 990,-2122.92 990,-2119.96 990,-2119.96 990,-2114.04 990,-2114.04 990,-2111.08 992.96,-2108.12 995.92,-2108.12 995.92,-2108.12 1039.08,-2108.12 1039.08,-2108.12 1042.04,-2108.12 1045,-2111.08 1045,-2114.04 1045,-2114.04 1045,-2119.96 1045,-2119.96 1045,-2122.92 1042.04,-2125.88 1039.08,-2125.88"/>
<text xml:space="preserve" text-anchor="start" x="998" y="-2113.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.mjs</text>
</a>
</g>
</g>
<!-- src/main/options/assert&#45;validity.mjs&#45;&gt;src/report/index.mjs -->
<g id="edge245" class="edge">
<title>src/main/options/assert&#45;validity.mjs&#45;&gt;src/report/index.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M924.3,-2359C944.09,-2359 963,-2359 963,-2359 963,-2359 963,-2113.48 963,-2113.48 963,-2113.48 980.58,-2113.48 980.58,-2113.48"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="980.58,-2115.58 986.58,-2113.48 980.58,-2111.38 980.58,-2115.58"/>
</g>
<!-- src/main/options/normalize.mjs&#45;&gt;src/utl/array&#45;util.mjs -->
<g id="edge248" class="edge">
<title>src/main/options/normalize.mjs&#45;&gt;src/utl/array&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M916.59,-2388.56C937.68,-2388.56 960,-2388.56 960,-2388.56 960,-2388.56 960,-1860.04 960,-1860.04 960,-1860.04 1676,-1860.04 1676,-1860.04 1676,-1860.04 1676,-1859.27 1676,-1859.27"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1678.1,-1861.35 1676,-1855.35 1673.9,-1861.35 1678.1,-1861.35"/>
</g>
<!-- src/main/helpers.mjs -->
<g id="node141" class="node">
<title>src/main/helpers.mjs</title>
<g id="a_node141"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/helpers.mjs" xlink:title="helpers.mjs">
<path fill="#ffcccc" stroke="black" d="M1043.21,-2335.88C1043.21,-2335.88 991.79,-2335.88 991.79,-2335.88 988.83,-2335.88 985.88,-2332.92 985.88,-2329.96 985.88,-2329.96 985.88,-2324.04 985.88,-2324.04 985.88,-2321.08 988.83,-2318.12 991.79,-2318.12 991.79,-2318.12 1043.21,-2318.12 1043.21,-2318.12 1046.17,-2318.12 1049.12,-2321.08 1049.12,-2324.04 1049.12,-2324.04 1049.12,-2329.96 1049.12,-2329.96 1049.12,-2332.92 1046.17,-2335.88 1043.21,-2335.88"/>
<text xml:space="preserve" text-anchor="start" x="993.88" y="-2323.32" font-family="Helvetica,sans-Serif" font-size="9.00">helpers.mjs</text>
</a>
</g>
</g>
<!-- src/main/options/normalize.mjs&#45;&gt;src/main/helpers.mjs -->
<g id="edge246" class="edge">
<title>src/main/options/normalize.mjs&#45;&gt;src/main/helpers.mjs</title>
<g id="a_edge246"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M916.5,-2393C940.34,-2393 967,-2393 967,-2393 967,-2393 967,-2331.53 967,-2331.53 967,-2331.53 976.49,-2331.53 976.49,-2331.53"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="976.49,-2333.63 982.49,-2331.53 976.49,-2329.43 976.49,-2333.63"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="1013.12" y="-2374.22" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/main/options/defaults.mjs -->
<g id="node144" class="node">
<title>src/main/options/defaults.mjs</title>
<g id="a_node144"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/options/defaults.mjs" xlink:title="defaults.mjs">
<path fill="#ffcccc" stroke="black" d="M1043.96,-2401.88C1043.96,-2401.88 991.04,-2401.88 991.04,-2401.88 988.08,-2401.88 985.12,-2398.92 985.12,-2395.96 985.12,-2395.96 985.12,-2390.04 985.12,-2390.04 985.12,-2387.08 988.08,-2384.12 991.04,-2384.12 991.04,-2384.12 1043.96,-2384.12 1043.96,-2384.12 1046.92,-2384.12 1049.88,-2387.08 1049.88,-2390.04 1049.88,-2390.04 1049.88,-2395.96 1049.88,-2395.96 1049.88,-2398.92 1046.92,-2401.88 1043.96,-2401.88"/>
<text xml:space="preserve" text-anchor="start" x="993.12" y="-2389.32" font-family="Helvetica,sans-Serif" font-size="9.00">defaults.mjs</text>
</a>
</g>
</g>
<!-- src/main/options/normalize.mjs&#45;&gt;src/main/options/defaults.mjs -->
<g id="edge247" class="edge">
<title>src/main/options/normalize.mjs&#45;&gt;src/main/options/defaults.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M916.66,-2397.44C916.66,-2397.44 975.69,-2397.44 975.69,-2397.44"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="975.69,-2399.54 981.69,-2397.44 975.69,-2395.34 975.69,-2399.54"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/enrich/summarize/index.mjs -->
<g id="edge249" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/enrich/summarize/index.mjs</title>
<path fill="none" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" d="M913,-2477.11C913,-2516.24 913,-2668 913,-2668 913,-2668 980.74,-2668 980.74,-2668"/>
<polygon fill="#007766" fill-opacity="0.466667" stroke="#007766" stroke-width="2" stroke-opacity="0.466667" points="980.74,-2670.1 986.74,-2668 980.74,-2665.9 980.74,-2670.1"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge250" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M868,-2458.63C868,-2447.63 868,-2430.88 868,-2430.88 868,-2430.88 1620.74,-2430.88 1620.74,-2430.88"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.74,-2432.98 1626.74,-2430.88 1620.74,-2428.78 1620.74,-2432.98"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs -->
<g id="edge251" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M920.1,-2475.08C1019.28,-2475.08 1267,-2475.08 1267,-2475.08 1267,-2475.08 1267,-2433.15 1267,-2433.15"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1269.1,-2433.15 1267,-2427.15 1264.9,-2433.15 1269.1,-2433.15"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/filter&#45;bank.mjs -->
<g id="edge252" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/filter&#45;bank.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M892,-2458.83C892,-2452.59 892,-2445.46 892,-2445.46 892,-2445.46 1276.54,-2445.46 1276.54,-2445.46"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1276.54,-2447.56 1282.54,-2445.46 1276.54,-2443.36 1276.54,-2447.56"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/strip&#45;self&#45;transitions.mjs -->
<g id="edge253" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/graph&#45;utl/strip&#45;self&#45;transitions.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M919.89,-2473.29C975.44,-2473.29 1069,-2473.29 1069,-2473.29 1069,-2473.29 1069,-2389 1069,-2389 1069,-2389 1257.02,-2389 1257.02,-2389"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1257.02,-2391.1 1263.02,-2389 1257.02,-2386.9 1257.02,-2391.1"/>
</g>
<!-- src/main/report&#45;wrap.mjs&#45;&gt;src/report/index.mjs -->
<g id="edge254" class="edge">
<title>src/main/report&#45;wrap.mjs&#45;&gt;src/report/index.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M919.88,-2471.5C941.99,-2471.5 965,-2471.5 965,-2471.5 965,-2471.5 965,-2118.84 965,-2118.84 965,-2118.84 980.69,-2118.84 980.69,-2118.84"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="980.69,-2120.94 986.69,-2118.84 980.69,-2116.74 980.69,-2120.94"/>
</g>
<!-- src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/utl/object&#45;util.mjs -->
<g id="edge260" class="edge">
<title>src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/utl/object&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M773.01,-2341.12C944.5,-2341.12 1550,-2341.12 1550,-2341.12 1550,-2341.12 1550,-1819.38 1550,-1819.38 1550,-1819.38 1618.93,-1819.38 1618.93,-1819.38"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1618.93,-1821.48 1624.93,-1819.38 1618.93,-1817.28 1618.93,-1821.48"/>
</g>
<!-- src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs -->
<g id="edge258" class="edge">
<title>src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/main/options/assert&#45;validity.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M770,-2354.31C770,-2355.94 770,-2357.12 770,-2357.12 770,-2357.12 826.08,-2357.12 826.08,-2357.12"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="826.08,-2359.23 832.08,-2357.13 826.08,-2355.03 826.08,-2359.23"/>
</g>
<!-- src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/main/helpers.mjs -->
<g id="edge257" class="edge">
<title>src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/main/helpers.mjs</title>
<g id="a_edge257"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M770,-2335.8C770,-2331.87 770,-2328.18 770,-2328.18 770,-2328.18 976.37,-2328.18 976.37,-2328.18"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="976.37,-2330.28 982.37,-2328.18 976.37,-2326.08 976.37,-2330.28"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="823.25" y="-2319.62" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/schema/configuration.schema.mjs -->
<g id="node145" class="node">
<title>src/schema/configuration.schema.mjs</title>
<g id="a_node145"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/configuration.schema.mjs" xlink:title="configuration.schema.mjs">
<polygon fill="#ffffcc" stroke="black" points="939.88,-2057.88 819.62,-2057.88 819.62,-2040.12 939.88,-2040.12 939.88,-2057.88"/>
<text xml:space="preserve" text-anchor="start" x="827.62" y="-2045.33" font-family="Helvetica,sans-Serif" font-size="9.00">configuration.schema.mjs</text>
</a>
</g>
</g>
<!-- src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/schema/configuration.schema.mjs -->
<g id="edge259" class="edge">
<title>src/main/rule&#45;set/assert&#45;validity.mjs&#45;&gt;src/schema/configuration.schema.mjs</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M767,-2335.82C767,-2285.86 767,-2049 767,-2049 767,-2049 810.39,-2049 810.39,-2049"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="810.39,-2051.1 816.39,-2049 810.39,-2046.9 810.39,-2051.1"/>
</g>
<!-- src/main/rule&#45;set/normalize.mjs&#45;&gt;src/main/helpers.mjs -->
<g id="edge261" class="edge">
<title>src/main/rule&#45;set/normalize.mjs&#45;&gt;src/main/helpers.mjs</title>
<g id="a_edge261"><a xlink:title="not&#45;to&#45;ancestor&#45;folders">
<path fill="none" stroke="blue" stroke-width="2" d="M765.11,-2378.71C842.96,-2378.71 1017,-2378.71 1017,-2378.71 1017,-2378.71 1017,-2345.03 1017,-2345.03"/>
<polygon fill="blue" stroke="blue" stroke-width="2" points="1019.1,-2345.03 1017,-2339.03 1014.9,-2345.03 1019.1,-2345.03"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="861.77" y="-2370.16" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">not&#45;to&#45;ancestor&#45;folders</text>
</g>
<!-- src/main/helpers.mjs&#45;&gt;src/utl/object&#45;util.mjs -->
<g id="edge241" class="edge">
<title>src/main/helpers.mjs&#45;&gt;src/utl/object&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1049.25,-2327C1163.08,-2327 1544,-2327 1544,-2327 1544,-2327 1544,-1817.62 1544,-1817.62 1544,-1817.62 1618.99,-1817.62 1618.99,-1817.62"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1618.99,-1819.73 1624.99,-1817.63 1618.99,-1815.53 1618.99,-1819.73"/>
</g>
<!-- src/main/index.d.ts -->
<g id="node142" class="node">
<title>src/main/index.d.ts</title>
<g id="a_node142"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/main/index.d.ts" xlink:title="index.d.ts">
<path fill="#ffcccc" stroke="black" d="M450.33,-2495.88C450.33,-2495.88 407.17,-2495.88 407.17,-2495.88 404.21,-2495.88 401.25,-2492.92 401.25,-2489.96 401.25,-2489.96 401.25,-2484.04 401.25,-2484.04 401.25,-2481.08 404.21,-2478.12 407.17,-2478.12 407.17,-2478.12 450.33,-2478.12 450.33,-2478.12 453.29,-2478.12 456.25,-2481.08 456.25,-2484.04 456.25,-2484.04 456.25,-2489.96 456.25,-2489.96 456.25,-2492.92 453.29,-2495.88 450.33,-2495.88"/>
<text xml:space="preserve" text-anchor="start" x="409.25" y="-2483.32" font-family="Helvetica,sans-Serif" font-size="9.00">index.d.ts</text>
</a>
</g>
</g>
<!-- src/report/plugins.mjs -->
<g id="node159" class="node">
<title>src/report/plugins.mjs</title>
<g id="a_node159"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/plugins.mjs" xlink:title="plugins.mjs">
<path fill="#ffccff" stroke="black" d="M1180.21,-2215.88C1180.21,-2215.88 1129.54,-2215.88 1129.54,-2215.88 1126.58,-2215.88 1123.62,-2212.92 1123.62,-2209.96 1123.62,-2209.96 1123.62,-2204.04 1123.62,-2204.04 1123.62,-2201.08 1126.58,-2198.12 1129.54,-2198.12 1129.54,-2198.12 1180.21,-2198.12 1180.21,-2198.12 1183.17,-2198.12 1186.12,-2201.08 1186.12,-2204.04 1186.12,-2204.04 1186.12,-2209.96 1186.12,-2209.96 1186.12,-2212.92 1183.17,-2215.88 1180.21,-2215.88"/>
<text xml:space="preserve" text-anchor="start" x="1131.62" y="-2203.32" font-family="Helvetica,sans-Serif" font-size="9.00">plugins.mjs</text>
</a>
</g>
</g>
<!-- src/report/index.mjs&#45;&gt;src/report/plugins.mjs -->
<g id="edge279" class="edge">
<title>src/report/index.mjs&#45;&gt;src/report/plugins.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1045.25,-2119.96C1059.12,-2119.96 1073,-2119.96 1073,-2119.96 1073,-2119.96 1073,-2207 1073,-2207 1073,-2207 1114.43,-2207 1114.43,-2207"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1114.43,-2209.1 1120.43,-2207 1114.43,-2204.9 1114.43,-2209.1"/>
</g>
<!-- src/report/anon -->
<g id="node146" class="node">
<title>src/report/anon</title>
<g id="a_node146"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/anon" xlink:title="anon">
<polygon fill="#ffccff" stroke="black" points="1044.5,-1975.88 992.47,-1975.88 990.5,-1973.9 990.5,-1958.12 1042.53,-1958.12 1044.5,-1960.1 1044.5,-1975.88"/>
<polyline fill="none" stroke="black" points="1042.53,-1973.9 990.5,-1973.9"/>
<polyline fill="none" stroke="black" points="1042.53,-1973.9 1042.53,-1958.12"/>
<polyline fill="none" stroke="black" points="1042.53,-1973.9 1044.5,-1975.88"/>
<text xml:space="preserve" text-anchor="start" x="1007" y="-1963.33" font-family="Helvetica,sans-Serif" font-size="9.00">anon</text>
</a>
</g>
</g>
<!-- src/report/azure&#45;devops.mjs -->
<g id="node147" class="node">
<title>src/report/azure&#45;devops.mjs</title>
<g id="a_node147"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/azure-devops.mjs" xlink:title="azure&#45;devops.mjs">
<path fill="#ffccff" stroke="black" d="M1193.33,-2095.88C1193.33,-2095.88 1116.42,-2095.88 1116.42,-2095.88 1113.46,-2095.88 1110.5,-2092.92 1110.5,-2089.96 1110.5,-2089.96 1110.5,-2084.04 1110.5,-2084.04 1110.5,-2081.08 1113.46,-2078.12 1116.42,-2078.12 1116.42,-2078.12 1193.33,-2078.12 1193.33,-2078.12 1196.29,-2078.12 1199.25,-2081.08 1199.25,-2084.04 1199.25,-2084.04 1199.25,-2089.96 1199.25,-2089.96 1199.25,-2092.92 1196.29,-2095.88 1193.33,-2095.88"/>
<text xml:space="preserve" text-anchor="start" x="1118.5" y="-2083.32" font-family="Helvetica,sans-Serif" font-size="9.00">azure&#45;devops.mjs</text>
</a>
</g>
</g>
<!-- src/report/utl -->
<g id="node148" class="node">
<title>src/report/utl</title>
<g id="a_node148"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/utl" xlink:title="utl">
<polygon fill="#ffccff" stroke="black" points="1349.25,-2005.88 1297.22,-2005.88 1295.25,-2003.9 1295.25,-1988.12 1347.28,-1988.12 1349.25,-1990.1 1349.25,-2005.88"/>
<polyline fill="none" stroke="black" points="1347.28,-2003.9 1295.25,-2003.9"/>
<polyline fill="none" stroke="black" points="1347.28,-2003.9 1347.28,-1988.12"/>
<polyline fill="none" stroke="black" points="1347.28,-2003.9 1349.25,-2005.88"/>
<text xml:space="preserve" text-anchor="start" x="1317.38" y="-1993.33" font-family="Helvetica,sans-Serif" font-size="9.00">utl</text>
</a>
</g>
</g>
<!-- src/report/azure&#45;devops.mjs&#45;&gt;src/report/utl -->
<g id="edge262" class="edge">
<title>src/report/azure&#45;devops.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1194,-2077.69C1194,-2055.23 1194,-1999.96 1194,-1999.96 1194,-1999.96 1286.02,-1999.96 1286.02,-1999.96"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1286.02,-2002.06 1292.02,-1999.96 1286.02,-1997.86 1286.02,-2002.06"/>
</g>
<!-- src/report/baseline.mjs -->
<g id="node149" class="node">
<title>src/report/baseline.mjs</title>
<g id="a_node149"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/baseline.mjs" xlink:title="baseline.mjs">
<path fill="#ffccff" stroke="black" d="M1045.46,-2005.88C1045.46,-2005.88 989.54,-2005.88 989.54,-2005.88 986.58,-2005.88 983.62,-2002.92 983.62,-1999.96 983.62,-1999.96 983.62,-1994.04 983.62,-1994.04 983.62,-1991.08 986.58,-1988.12 989.54,-1988.12 989.54,-1988.12 1045.46,-1988.12 1045.46,-1988.12 1048.42,-1988.12 1051.38,-1991.08 1051.38,-1994.04 1051.38,-1994.04 1051.38,-1999.96 1051.38,-1999.96 1051.38,-2002.92 1048.42,-2005.88 1045.46,-2005.88"/>
<text xml:space="preserve" text-anchor="start" x="991.62" y="-1993.33" font-family="Helvetica,sans-Serif" font-size="9.00">baseline.mjs</text>
</a>
</g>
</g>
<!-- src/report/csv.mjs -->
<g id="node150" class="node">
<title>src/report/csv.mjs</title>
<g id="a_node150"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/csv.mjs" xlink:title="csv.mjs">
<path fill="#ffccff" stroke="black" d="M1175.96,-1915.88C1175.96,-1915.88 1133.79,-1915.88 1133.79,-1915.88 1130.83,-1915.88 1127.88,-1912.92 1127.88,-1909.96 1127.88,-1909.96 1127.88,-1904.04 1127.88,-1904.04 1127.88,-1901.08 1130.83,-1898.12 1133.79,-1898.12 1133.79,-1898.12 1175.96,-1898.12 1175.96,-1898.12 1178.92,-1898.12 1181.88,-1901.08 1181.88,-1904.04 1181.88,-1904.04 1181.88,-1909.96 1181.88,-1909.96 1181.88,-1912.92 1178.92,-1915.88 1175.96,-1915.88"/>
<text xml:space="preserve" text-anchor="start" x="1139.88" y="-1903.33" font-family="Helvetica,sans-Serif" font-size="9.00">csv.mjs</text>
</a>
</g>
</g>
<!-- src/report/csv.mjs&#45;&gt;src/report/utl -->
<g id="edge263" class="edge">
<title>src/report/csv.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1181.99,-1907C1232.52,-1907 1336,-1907 1336,-1907 1336,-1907 1336,-1978.68 1336,-1978.68"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1333.9,-1978.68 1336,-1984.68 1338.1,-1978.68 1333.9,-1978.68"/>
</g>
<!-- src/report/d2.mjs -->
<g id="node151" class="node">
<title>src/report/d2.mjs</title>
<g id="a_node151"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/d2.mjs" xlink:title="d2.mjs">
<path fill="#ffccff" stroke="black" d="M1175.96,-1945.88C1175.96,-1945.88 1133.79,-1945.88 1133.79,-1945.88 1130.83,-1945.88 1127.88,-1942.92 1127.88,-1939.96 1127.88,-1939.96 1127.88,-1934.04 1127.88,-1934.04 1127.88,-1931.08 1130.83,-1928.12 1133.79,-1928.12 1133.79,-1928.12 1175.96,-1928.12 1175.96,-1928.12 1178.92,-1928.12 1181.88,-1931.08 1181.88,-1934.04 1181.88,-1934.04 1181.88,-1939.96 1181.88,-1939.96 1181.88,-1942.92 1178.92,-1945.88 1175.96,-1945.88"/>
<text xml:space="preserve" text-anchor="start" x="1141.38" y="-1933.33" font-family="Helvetica,sans-Serif" font-size="9.00">d2.mjs</text>
</a>
</g>
</g>
<!-- src/report/d2.mjs&#45;&gt;src/report/utl -->
<g id="edge264" class="edge">
<title>src/report/d2.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.1,-1937C1229.46,-1937 1322,-1937 1322,-1937 1322,-1937 1322,-1978.6 1322,-1978.6"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1319.9,-1978.6 1322,-1984.6 1324.1,-1978.6 1319.9,-1978.6"/>
</g>
<!-- src/report/dot&#45;&gt;src/utl/object&#45;util.mjs -->
<g id="edge266" class="edge">
<title>src/report/dot&#45;&gt;src/utl/object&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1182.12,-2172.56C1269.65,-2172.56 1538,-2172.56 1538,-2172.56 1538,-2172.56 1538,-1815.88 1538,-1815.88 1538,-1815.88 1618.88,-1815.88 1618.88,-1815.88"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1618.88,-1817.98 1624.88,-1815.88 1618.88,-1813.78 1618.88,-1817.98"/>
</g>
<!-- src/report/dot&#45;&gt;src/graph&#45;utl/compare.mjs -->
<g id="edge268" class="edge">
<title>src/report/dot&#45;&gt;src/graph&#45;utl/compare.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.12,-2177C1199.96,-2177 1220,-2177 1220,-2177 1220,-2177 1220,-2429.12 1220,-2429.12 1220,-2429.12 1620.96,-2429.12 1620.96,-2429.12"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1620.96,-2431.23 1626.96,-2429.13 1620.96,-2427.03 1620.96,-2431.23"/>
</g>
<!-- src/report/dot&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs -->
<g id="edge271" class="edge">
<title>src/report/dot&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;folder.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.15,-2174.78C1219.5,-2174.78 1282,-2174.78 1282,-2174.78 1282,-2174.78 1282,-2336.79 1282,-2336.79"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1279.9,-2336.79 1282,-2342.79 1284.1,-2336.79 1279.9,-2336.79"/>
</g>
<!-- src/report/dot&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs -->
<g id="edge269" class="edge">
<title>src/report/dot&#45;&gt;src/graph&#45;utl/consolidate&#45;to&#45;pattern.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.05,-2181.44C1188.72,-2181.44 1194,-2181.44 1194,-2181.44 1194,-2181.44 1194,-2415 1194,-2415 1194,-2415 1252.1,-2415 1252.1,-2415"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1252.1,-2417.1 1258.1,-2415 1252.1,-2412.9 1252.1,-2417.1"/>
</g>
<!-- src/report/dot&#45;&gt;src/graph&#45;utl/filter&#45;bank.mjs -->
<g id="edge265" class="edge">
<title>src/report/dot&#45;&gt;src/graph&#45;utl/filter&#45;bank.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.26,-2183.66C1187.29,-2183.66 1191,-2183.66 1191,-2183.66 1191,-2183.66 1191,-2440.79 1191,-2440.79 1191,-2440.79 1276.31,-2440.79 1276.31,-2440.79"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1276.31,-2442.89 1282.31,-2440.79 1276.31,-2438.69 1276.31,-2442.89"/>
</g>
<!-- src/report/dot&#45;&gt;src/graph&#45;utl/strip&#45;self&#45;transitions.mjs -->
<g id="edge270" class="edge">
<title>src/report/dot&#45;&gt;src/graph&#45;utl/strip&#45;self&#45;transitions.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.27,-2179.22C1190.31,-2179.22 1197,-2179.22 1197,-2179.22 1197,-2179.22 1197,-2381.29 1197,-2381.29 1197,-2381.29 1256.83,-2381.29 1256.83,-2381.29"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1256.83,-2383.39 1262.83,-2381.29 1256.83,-2379.19 1256.83,-2383.39"/>
</g>
<!-- src/report/dot&#45;&gt;src/report/utl -->
<g id="edge267" class="edge">
<title>src/report/dot&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.29,-2170.34C1233.38,-2170.34 1338,-2170.34 1338,-2170.34 1338,-2170.34 1338,-2015.35 1338,-2015.35"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1340.1,-2015.35 1338,-2009.35 1335.9,-2015.35 1340.1,-2015.35"/>
</g>
<!-- src/report/error&#45;html -->
<g id="node153" class="node">
<title>src/report/error&#45;html</title>
<g id="a_node153"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/error-html" xlink:title="error&#45;html">
<polygon fill="#ffccff" stroke="black" points="1182.75,-2005.88 1128.97,-2005.88 1127,-2003.9 1127,-1988.12 1180.78,-1988.12 1182.75,-1990.1 1182.75,-2005.88"/>
<polyline fill="none" stroke="black" points="1180.78,-2003.9 1127,-2003.9"/>
<polyline fill="none" stroke="black" points="1180.78,-2003.9 1180.78,-1988.12"/>
<polyline fill="none" stroke="black" points="1180.78,-2003.9 1182.75,-2005.88"/>
<text xml:space="preserve" text-anchor="start" x="1135" y="-1993.33" font-family="Helvetica,sans-Serif" font-size="9.00">error&#45;html</text>
</a>
</g>
</g>
<!-- src/report/error&#45;html&#45;&gt;src/report/utl -->
<g id="edge273" class="edge">
<title>src/report/error&#45;html&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.89,-1994.04C1182.89,-1994.04 1285.95,-1994.04 1285.95,-1994.04"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1285.95,-1996.14 1291.95,-1994.04 1285.95,-1991.94 1285.95,-1996.14"/>
</g>
<!-- src/report/error&#45;long.mjs -->
<g id="node154" class="node">
<title>src/report/error&#45;long.mjs</title>
<g id="a_node154"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/error-long.mjs" xlink:title="error&#45;long.mjs">
<path fill="#ffccff" stroke="black" d="M1048.08,-1945.88C1048.08,-1945.88 986.92,-1945.88 986.92,-1945.88 983.96,-1945.88 981,-1942.92 981,-1939.96 981,-1939.96 981,-1934.04 981,-1934.04 981,-1931.08 983.96,-1928.12 986.92,-1928.12 986.92,-1928.12 1048.08,-1928.12 1048.08,-1928.12 1051.04,-1928.12 1054,-1931.08 1054,-1934.04 1054,-1934.04 1054,-1939.96 1054,-1939.96 1054,-1942.92 1051.04,-1945.88 1048.08,-1945.88"/>
<text xml:space="preserve" text-anchor="start" x="989" y="-1933.33" font-family="Helvetica,sans-Serif" font-size="9.00">error&#45;long.mjs</text>
</a>
</g>
</g>
<!-- src/report/error.mjs -->
<g id="node155" class="node">
<title>src/report/error.mjs</title>
<g id="a_node155"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/error.mjs" xlink:title="error.mjs">
<path fill="#ffccff" stroke="black" d="M1175.96,-2125.88C1175.96,-2125.88 1133.79,-2125.88 1133.79,-2125.88 1130.83,-2125.88 1127.88,-2122.92 1127.88,-2119.96 1127.88,-2119.96 1127.88,-2114.04 1127.88,-2114.04 1127.88,-2111.08 1130.83,-2108.12 1133.79,-2108.12 1133.79,-2108.12 1175.96,-2108.12 1175.96,-2108.12 1178.92,-2108.12 1181.88,-2111.08 1181.88,-2114.04 1181.88,-2114.04 1181.88,-2119.96 1181.88,-2119.96 1181.88,-2122.92 1178.92,-2125.88 1175.96,-2125.88"/>
<text xml:space="preserve" text-anchor="start" x="1136.88" y="-2113.32" font-family="Helvetica,sans-Serif" font-size="9.00">error.mjs</text>
</a>
</g>
</g>
<!-- src/report/error&#45;long.mjs&#45;&gt;src/report/error.mjs -->
<g id="edge274" class="edge">
<title>src/report/error&#45;long.mjs&#45;&gt;src/report/error.mjs</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1054.22,-1937C1065.97,-1937 1076,-1937 1076,-1937 1076,-1937 1076,-2114.04 1076,-2114.04 1076,-2114.04 1118.7,-2114.04 1118.7,-2114.04"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1118.7,-2116.14 1124.7,-2114.04 1118.7,-2111.94 1118.7,-2116.14"/>
</g>
<!-- src/report/error.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs -->
<g id="edge276" class="edge">
<title>src/report/error.mjs&#45;&gt;src/graph&#45;utl/rule&#45;set.mjs</title>
<path fill="none" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" d="M1182.09,-2121.44C1186.15,-2121.44 1189,-2121.44 1189,-2121.44 1189,-2121.44 1189,-2467.92 1189,-2467.92 1189,-2467.92 1281.31,-2467.92 1281.31,-2467.92"/>
<polygon fill="#770000" fill-opacity="0.466667" stroke="#770000" stroke-width="2" stroke-opacity="0.466667" points="1281.31,-2470.02 1287.31,-2467.92 1281.31,-2465.82 1281.31,-2470.02"/>
</g>
<!-- src/report/error.mjs&#45;&gt;src/report/utl -->
<g id="edge275" class="edge">
<title>src/report/error.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.31,-2112.56C1231.12,-2112.56 1328,-2112.56 1328,-2112.56 1328,-2112.56 1328,-2015.1 1328,-2015.1"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1330.1,-2015.1 1328,-2009.1 1325.9,-2015.1 1330.1,-2015.1"/>
</g>
<!-- src/utl/wrap&#45;and&#45;indent.mjs -->
<g id="node156" class="node">
<title>src/utl/wrap&#45;and&#45;indent.mjs</title>
<g id="a_node156"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/utl/wrap-and-indent.mjs" xlink:title="utl&#45;module&#45;not&#45;shared&#45;enough">
<path fill="#cccccc" stroke="blue" d="M1708.58,-1791.88C1708.58,-1791.88 1620.42,-1791.88 1620.42,-1791.88 1617.46,-1791.88 1614.5,-1788.92 1614.5,-1785.96 1614.5,-1785.96 1614.5,-1780.04 1614.5,-1780.04 1614.5,-1777.08 1617.46,-1774.12 1620.42,-1774.12 1620.42,-1774.12 1708.58,-1774.12 1708.58,-1774.12 1711.54,-1774.12 1714.5,-1777.08 1714.5,-1780.04 1714.5,-1780.04 1714.5,-1785.96 1714.5,-1785.96 1714.5,-1788.92 1711.54,-1791.88 1708.58,-1791.88"/>
<text xml:space="preserve" text-anchor="start" x="1622.5" y="-1779.33" font-family="Helvetica,sans-Serif" font-size="9.00" fill="blue">wrap&#45;and&#45;indent.mjs</text>
</a>
</g>
</g>
<!-- src/report/error.mjs&#45;&gt;src/utl/wrap&#45;and&#45;indent.mjs -->
<g id="edge277" class="edge">
<title>src/report/error.mjs&#45;&gt;src/utl/wrap&#45;and&#45;indent.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1182.35,-2117C1282.48,-2117 1622,-2117 1622,-2117 1622,-2117 1622,-1801.31 1622,-1801.31"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1624.1,-1801.31 1622,-1795.31 1619.9,-1801.31 1624.1,-1801.31"/>
</g>
<!-- src/report/html -->
<g id="node157" class="node">
<title>src/report/html</title>
<g id="a_node157"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/html" xlink:title="html">
<polygon fill="#ffccff" stroke="black" points="1181.88,-1975.88 1129.85,-1975.88 1127.88,-1973.9 1127.88,-1958.12 1179.9,-1958.12 1181.88,-1960.1 1181.88,-1975.88"/>
<polyline fill="none" stroke="black" points="1179.9,-1973.9 1127.88,-1973.9"/>
<polyline fill="none" stroke="black" points="1179.9,-1973.9 1179.9,-1958.12"/>
<polyline fill="none" stroke="black" points="1179.9,-1973.9 1181.88,-1975.88"/>
<text xml:space="preserve" text-anchor="start" x="1146.25" y="-1963.33" font-family="Helvetica,sans-Serif" font-size="9.00">html</text>
</a>
</g>
</g>
<!-- src/report/html&#45;&gt;src/report/utl -->
<g id="edge278" class="edge">
<title>src/report/html&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1182.07,-1967C1226.32,-1967 1309,-1967 1309,-1967 1309,-1967 1309,-1978.81 1309,-1978.81"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1306.9,-1978.81 1309,-1984.81 1311.1,-1978.81 1306.9,-1978.81"/>
</g>
<!-- src/report/identity.mjs -->
<g id="node158" class="node">
<title>src/report/identity.mjs</title>
<g id="a_node158"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/identity.mjs" xlink:title="identity.mjs">
<path fill="#ffccff" stroke="black" d="M1042.46,-2065.88C1042.46,-2065.88 992.54,-2065.88 992.54,-2065.88 989.58,-2065.88 986.62,-2062.92 986.62,-2059.96 986.62,-2059.96 986.62,-2054.04 986.62,-2054.04 986.62,-2051.08 989.58,-2048.12 992.54,-2048.12 992.54,-2048.12 1042.46,-2048.12 1042.46,-2048.12 1045.42,-2048.12 1048.38,-2051.08 1048.38,-2054.04 1048.38,-2054.04 1048.38,-2059.96 1048.38,-2059.96 1048.38,-2062.92 1045.42,-2065.88 1042.46,-2065.88"/>
<text xml:space="preserve" text-anchor="start" x="994.62" y="-2053.32" font-family="Helvetica,sans-Serif" font-size="9.00">identity.mjs</text>
</a>
</g>
</g>
<!-- src/report/json.mjs -->
<g id="node160" class="node">
<title>src/report/json.mjs</title>
<g id="a_node160"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/json.mjs" xlink:title="json.mjs">
<path fill="#ffccff" stroke="black" d="M1038.58,-2095.88C1038.58,-2095.88 996.42,-2095.88 996.42,-2095.88 993.46,-2095.88 990.5,-2092.92 990.5,-2089.96 990.5,-2089.96 990.5,-2084.04 990.5,-2084.04 990.5,-2081.08 993.46,-2078.12 996.42,-2078.12 996.42,-2078.12 1038.58,-2078.12 1038.58,-2078.12 1041.54,-2078.12 1044.5,-2081.08 1044.5,-2084.04 1044.5,-2084.04 1044.5,-2089.96 1044.5,-2089.96 1044.5,-2092.92 1041.54,-2095.88 1038.58,-2095.88"/>
<text xml:space="preserve" text-anchor="start" x="1000.62" y="-2083.32" font-family="Helvetica,sans-Serif" font-size="9.00">json.mjs</text>
</a>
</g>
</g>
<!-- src/report/markdown.mjs -->
<g id="node161" class="node">
<title>src/report/markdown.mjs</title>
<g id="a_node161"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/markdown.mjs" xlink:title="markdown.mjs">
<path fill="#ffccff" stroke="black" d="M1049.21,-1915.88C1049.21,-1915.88 985.79,-1915.88 985.79,-1915.88 982.83,-1915.88 979.88,-1912.92 979.88,-1909.96 979.88,-1909.96 979.88,-1904.04 979.88,-1904.04 979.88,-1901.08 982.83,-1898.12 985.79,-1898.12 985.79,-1898.12 1049.21,-1898.12 1049.21,-1898.12 1052.17,-1898.12 1055.12,-1901.08 1055.12,-1904.04 1055.12,-1904.04 1055.12,-1909.96 1055.12,-1909.96 1055.12,-1912.92 1052.17,-1915.88 1049.21,-1915.88"/>
<text xml:space="preserve" text-anchor="start" x="987.88" y="-1903.33" font-family="Helvetica,sans-Serif" font-size="9.00">markdown.mjs</text>
</a>
</g>
</g>
<!-- src/report/markdown.mjs&#45;&gt;src/report/error&#45;html -->
<g id="edge280" class="edge">
<title>src/report/markdown.mjs&#45;&gt;src/report/error&#45;html</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1055.52,-1907C1067.18,-1907 1077,-1907 1077,-1907 1077,-1907 1077,-1997 1077,-1997 1077,-1997 1117.73,-1997 1117.73,-1997"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1117.73,-1999.1 1123.73,-1997 1117.73,-1994.9 1117.73,-1999.1"/>
</g>
<!-- src/report/mermaid.mjs -->
<g id="node162" class="node">
<title>src/report/mermaid.mjs</title>
<g id="a_node162"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/mermaid.mjs" xlink:title="mermaid.mjs">
<path fill="#ffccff" stroke="black" d="M1045.83,-2155.88C1045.83,-2155.88 989.17,-2155.88 989.17,-2155.88 986.21,-2155.88 983.25,-2152.92 983.25,-2149.96 983.25,-2149.96 983.25,-2144.04 983.25,-2144.04 983.25,-2141.08 986.21,-2138.12 989.17,-2138.12 989.17,-2138.12 1045.83,-2138.12 1045.83,-2138.12 1048.79,-2138.12 1051.75,-2141.08 1051.75,-2144.04 1051.75,-2144.04 1051.75,-2149.96 1051.75,-2149.96 1051.75,-2152.92 1048.79,-2155.88 1045.83,-2155.88"/>
<text xml:space="preserve" text-anchor="start" x="991.25" y="-2143.32" font-family="Helvetica,sans-Serif" font-size="9.00">mermaid.mjs</text>
</a>
</g>
</g>
<!-- src/report/metrics.mjs -->
<g id="node163" class="node">
<title>src/report/metrics.mjs</title>
<g id="a_node163"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/metrics.mjs" xlink:title="metrics.mjs">
<path fill="#ffccff" stroke="black" d="M1179.83,-2035.88C1179.83,-2035.88 1129.92,-2035.88 1129.92,-2035.88 1126.96,-2035.88 1124,-2032.92 1124,-2029.96 1124,-2029.96 1124,-2024.04 1124,-2024.04 1124,-2021.08 1126.96,-2018.12 1129.92,-2018.12 1129.92,-2018.12 1179.83,-2018.12 1179.83,-2018.12 1182.79,-2018.12 1185.75,-2021.08 1185.75,-2024.04 1185.75,-2024.04 1185.75,-2029.96 1185.75,-2029.96 1185.75,-2032.92 1182.79,-2035.88 1179.83,-2035.88"/>
<text xml:space="preserve" text-anchor="start" x="1132" y="-2023.33" font-family="Helvetica,sans-Serif" font-size="9.00">metrics.mjs</text>
</a>
</g>
</g>
<!-- src/report/metrics.mjs&#45;&gt;src/report/utl -->
<g id="edge281" class="edge">
<title>src/report/metrics.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1186.19,-2027C1230.45,-2027 1306,-2027 1306,-2027 1306,-2027 1306,-2015.19 1306,-2015.19"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1308.1,-2015.19 1306,-2009.19 1303.9,-2015.19 1308.1,-2015.19"/>
</g>
<!-- src/report/null.mjs -->
<g id="node164" class="node">
<title>src/report/null.mjs</title>
<g id="a_node164"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/null.mjs" xlink:title="null.mjs">
<path fill="#ffccff" stroke="black" d="M1038.58,-2185.88C1038.58,-2185.88 996.42,-2185.88 996.42,-2185.88 993.46,-2185.88 990.5,-2182.92 990.5,-2179.96 990.5,-2179.96 990.5,-2174.04 990.5,-2174.04 990.5,-2171.08 993.46,-2168.12 996.42,-2168.12 996.42,-2168.12 1038.58,-2168.12 1038.58,-2168.12 1041.54,-2168.12 1044.5,-2171.08 1044.5,-2174.04 1044.5,-2174.04 1044.5,-2179.96 1044.5,-2179.96 1044.5,-2182.92 1041.54,-2185.88 1038.58,-2185.88"/>
<text xml:space="preserve" text-anchor="start" x="1001.75" y="-2173.32" font-family="Helvetica,sans-Serif" font-size="9.00">null.mjs</text>
</a>
</g>
</g>
<!-- src/report/teamcity.mjs -->
<g id="node165" class="node">
<title>src/report/teamcity.mjs</title>
<g id="a_node165"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/teamcity.mjs" xlink:title="teamcity.mjs">
<path fill="#ffccff" stroke="black" d="M1182.08,-2065.88C1182.08,-2065.88 1127.67,-2065.88 1127.67,-2065.88 1124.71,-2065.88 1121.75,-2062.92 1121.75,-2059.96 1121.75,-2059.96 1121.75,-2054.04 1121.75,-2054.04 1121.75,-2051.08 1124.71,-2048.12 1127.67,-2048.12 1127.67,-2048.12 1182.08,-2048.12 1182.08,-2048.12 1185.04,-2048.12 1188,-2051.08 1188,-2054.04 1188,-2054.04 1188,-2059.96 1188,-2059.96 1188,-2062.92 1185.04,-2065.88 1182.08,-2065.88"/>
<text xml:space="preserve" text-anchor="start" x="1129.75" y="-2053.32" font-family="Helvetica,sans-Serif" font-size="9.00">teamcity.mjs</text>
</a>
</g>
</g>
<!-- src/report/teamcity.mjs&#45;&gt;src/report/utl -->
<g id="edge282" class="edge">
<title>src/report/teamcity.mjs&#45;&gt;src/report/utl</title>
<path fill="none" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" d="M1188.47,-2057C1235.95,-2057 1317,-2057 1317,-2057 1317,-2057 1317,-2015.4 1317,-2015.4"/>
<polygon fill="#ff00ff" fill-opacity="0.466667" stroke="#ff00ff" stroke-width="2" stroke-opacity="0.466667" points="1319.1,-2015.4 1317,-2009.4 1314.9,-2015.4 1319.1,-2015.4"/>
</g>
<!-- src/report/text.mjs -->
<g id="node166" class="node">
<title>src/report/text.mjs</title>
<g id="a_node166"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/report/text.mjs" xlink:title="text.mjs">
<path fill="#ffccff" stroke="black" d="M1038.58,-2215.88C1038.58,-2215.88 996.42,-2215.88 996.42,-2215.88 993.46,-2215.88 990.5,-2212.92 990.5,-2209.96 990.5,-2209.96 990.5,-2204.04 990.5,-2204.04 990.5,-2201.08 993.46,-2198.12 996.42,-2198.12 996.42,-2198.12 1038.58,-2198.12 1038.58,-2198.12 1041.54,-2198.12 1044.5,-2201.08 1044.5,-2204.04 1044.5,-2204.04 1044.5,-2209.96 1044.5,-2209.96 1044.5,-2212.92 1041.54,-2215.88 1038.58,-2215.88"/>
<text xml:space="preserve" text-anchor="start" x="1002.12" y="-2203.32" font-family="Helvetica,sans-Serif" font-size="9.00">text.mjs</text>
</a>
</g>
</g>
<!-- src/schema/baseline&#45;violations.schema.json -->
<g id="node167" class="node">
<title>src/schema/baseline&#45;violations.schema.json</title>
<g id="a_node167"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/baseline-violations.schema.json" xlink:title="baseline&#45;violations.schema.json">
<path fill="#ccffcc" stroke="black" d="M953.38,-2121.98C953.38,-2123.21 920.38,-2124.2 879.75,-2124.2 839.12,-2124.2 806.12,-2123.21 806.12,-2121.98 806.12,-2121.98 806.12,-2102.02 806.12,-2102.02 806.12,-2100.79 839.12,-2099.8 879.75,-2099.8 920.38,-2099.8 953.38,-2100.79 953.38,-2102.02 953.38,-2102.02 953.38,-2121.98 953.38,-2121.98"/>
<path fill="none" stroke="black" d="M953.38,-2121.98C953.38,-2120.76 920.38,-2119.77 879.75,-2119.77 839.12,-2119.77 806.12,-2120.76 806.12,-2121.98"/>
<text xml:space="preserve" text-anchor="start" x="814.12" y="-2108.32" font-family="Helvetica,sans-Serif" font-size="9.00">baseline&#45;violations.schema.json</text>
</a>
</g>
</g>
<!-- src/schema/baseline&#45;violations.schema.mjs -->
<g id="node168" class="node">
<title>src/schema/baseline&#45;violations.schema.mjs</title>
<g id="a_node168"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/baseline-violations.schema.mjs" xlink:title="not&#45;unreachable&#45;from&#45;cli">
<polygon fill="#ffffcc" stroke="red" points="951.88,-2153.88 807.62,-2153.88 807.62,-2136.12 951.88,-2136.12 951.88,-2153.88"/>
<text xml:space="preserve" text-anchor="start" x="815.62" y="-2141.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="red">baseline&#45;violations.schema.mjs</text>
</a>
</g>
</g>
<!-- src/schema/configuration.schema.json -->
<g id="node169" class="node">
<title>src/schema/configuration.schema.json</title>
<g id="a_node169"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/configuration.schema.json" xlink:title="configuration.schema.json">
<path fill="#ccffcc" stroke="black" d="M941.38,-2187.98C941.38,-2189.21 913.75,-2190.2 879.75,-2190.2 845.75,-2190.2 818.12,-2189.21 818.12,-2187.98 818.12,-2187.98 818.12,-2168.02 818.12,-2168.02 818.12,-2166.79 845.75,-2165.8 879.75,-2165.8 913.75,-2165.8 941.38,-2166.79 941.38,-2168.02 941.38,-2168.02 941.38,-2187.98 941.38,-2187.98"/>
<path fill="none" stroke="black" d="M941.38,-2187.98C941.38,-2186.76 913.75,-2185.77 879.75,-2185.77 845.75,-2185.77 818.12,-2186.76 818.12,-2187.98"/>
<text xml:space="preserve" text-anchor="start" x="826.12" y="-2174.32" font-family="Helvetica,sans-Serif" font-size="9.00">configuration.schema.json</text>
</a>
</g>
</g>
<!-- src/schema/cruise&#45;result.schema.json -->
<g id="node170" class="node">
<title>src/schema/cruise&#45;result.schema.json</title>
<g id="a_node170"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/schema/cruise-result.schema.json" xlink:title="cruise&#45;result.schema.json">
<path fill="#ccffcc" stroke="black" d="M939.88,-2223.98C939.88,-2225.21 912.93,-2226.2 879.75,-2226.2 846.57,-2226.2 819.62,-2225.21 819.62,-2223.98 819.62,-2223.98 819.62,-2204.02 819.62,-2204.02 819.62,-2202.79 846.57,-2201.8 879.75,-2201.8 912.93,-2201.8 939.88,-2202.79 939.88,-2204.02 939.88,-2204.02 939.88,-2223.98 939.88,-2223.98"/>
<path fill="none" stroke="black" d="M939.88,-2223.98C939.88,-2222.76 912.93,-2221.77 879.75,-2221.77 846.57,-2221.77 819.62,-2222.76 819.62,-2223.98"/>
<text xml:space="preserve" text-anchor="start" x="827.62" y="-2210.32" font-family="Helvetica,sans-Serif" font-size="9.00">cruise&#45;result.schema.json</text>
</a>
</g>
</g>
<!-- src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge293" class="edge">
<title>src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1387.45,-3230.04C1397.71,-3230.04 1405,-3230.04 1405,-3230.04 1405,-3230.04 1405,-1874.27 1405,-1874.27 1405,-1874.27 1619.66,-1874.27 1619.66,-1874.27"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.66,-1876.37 1625.66,-1874.27 1619.66,-1872.17 1619.66,-1876.37"/>
</g>
<!-- src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs -->
<g id="edge291" class="edge">
<title>src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1387.74,-3235.96C1486.97,-3235.96 1664,-3235.96 1664,-3235.96 1664,-3235.96 1664,-3139.05 1664,-3139.05"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1666.1,-3139.05 1664,-3133.05 1661.9,-3139.05 1666.1,-3139.05"/>
</g>
<!-- src/validate/rule&#45;classifiers.mjs -->
<g id="node177" class="node">
<title>src/validate/rule&#45;classifiers.mjs</title>
<g id="a_node177"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/rule-classifiers.mjs" xlink:title="rule&#45;classifiers.mjs">
<path fill="#ccccff" stroke="black" d="M1540.83,-3211.88C1540.83,-3211.88 1460.92,-3211.88 1460.92,-3211.88 1457.96,-3211.88 1455,-3208.92 1455,-3205.96 1455,-3205.96 1455,-3200.04 1455,-3200.04 1455,-3197.08 1457.96,-3194.12 1460.92,-3194.12 1460.92,-3194.12 1540.83,-3194.12 1540.83,-3194.12 1543.79,-3194.12 1546.75,-3197.08 1546.75,-3200.04 1546.75,-3200.04 1546.75,-3205.96 1546.75,-3205.96 1546.75,-3208.92 1543.79,-3211.88 1540.83,-3211.88"/>
<text xml:space="preserve" text-anchor="start" x="1463" y="-3199.32" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;classifiers.mjs</text>
</a>
</g>
</g>
<!-- src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs -->
<g id="edge292" class="edge">
<title>src/validate/match&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1382,-3223.81C1382,-3216.8 1382,-3208.32 1382,-3208.32 1382,-3208.32 1445.55,-3208.32 1445.55,-3208.32"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1445.55,-3210.43 1451.55,-3208.33 1445.55,-3206.23 1445.55,-3210.43"/>
</g>
<!-- src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge296" class="edge">
<title>src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1393,-3163.64C1393,-3046.61 1393,-1871.73 1393,-1871.73 1393,-1871.73 1619.7,-1871.73 1619.7,-1871.73"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.7,-1873.83 1625.7,-1871.73 1619.7,-1869.63 1619.7,-1873.83"/>
</g>
<!-- src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs -->
<g id="edge294" class="edge">
<title>src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1395,-3163.63C1395,-3150.09 1395,-3126.68 1395,-3126.68 1395,-3126.68 1620.24,-3126.68 1620.24,-3126.68"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1620.24,-3128.78 1626.24,-3126.68 1620.24,-3124.58 1620.24,-3128.78"/>
</g>
<!-- src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs -->
<g id="edge295" class="edge">
<title>src/validate/match&#45;folder&#45;dependency&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1394,-3182.24C1394,-3190.47 1394,-3201.22 1394,-3201.22 1394,-3201.22 1445.59,-3201.22 1445.59,-3201.22"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1445.59,-3203.33 1451.59,-3201.23 1445.59,-3199.13 1445.59,-3203.33"/>
</g>
<!-- src/validate/match&#45;module&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs -->
<g id="edge300" class="edge">
<title>src/validate/match&#45;module&#45;rule.mjs&#45;&gt;src/validate/rule&#45;classifiers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1377.3,-3204.78C1377.3,-3204.78 1445.69,-3204.78 1445.69,-3204.78"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1445.69,-3206.88 1451.69,-3204.78 1445.69,-3202.68 1445.69,-3206.88"/>
</g>
<!-- src/validate/match&#45;module&#45;rule&#45;helpers.mjs -->
<g id="node178" class="node">
<title>src/validate/match&#45;module&#45;rule&#45;helpers.mjs</title>
<g id="a_node178"><a xlink:href="https://github.com/sverweij/dependency-cruiser/blob/main/src/validate/match-module-rule-helpers.mjs" xlink:title="match&#45;module&#45;rule&#45;helpers.mjs">
<path fill="#ccccff" stroke="black" d="M1566.71,-3151.88C1566.71,-3151.88 1435.04,-3151.88 1435.04,-3151.88 1432.08,-3151.88 1429.12,-3148.92 1429.12,-3145.96 1429.12,-3145.96 1429.12,-3140.04 1429.12,-3140.04 1429.12,-3137.08 1432.08,-3134.12 1435.04,-3134.12 1435.04,-3134.12 1566.71,-3134.12 1566.71,-3134.12 1569.67,-3134.12 1572.62,-3137.08 1572.62,-3140.04 1572.62,-3140.04 1572.62,-3145.96 1572.62,-3145.96 1572.62,-3148.92 1569.67,-3151.88 1566.71,-3151.88"/>
<text xml:space="preserve" text-anchor="start" x="1437.12" y="-3139.32" font-family="Helvetica,sans-Serif" font-size="9.00">match&#45;module&#45;rule&#45;helpers.mjs</text>
</a>
</g>
</g>
<!-- src/validate/match&#45;module&#45;rule.mjs&#45;&gt;src/validate/match&#45;module&#45;rule&#45;helpers.mjs -->
<g id="edge299" class="edge">
<title>src/validate/match&#45;module&#45;rule.mjs&#45;&gt;src/validate/match&#45;module&#45;rule&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1377.57,-3197.68C1408.94,-3197.68 1442,-3197.68 1442,-3197.68 1442,-3197.68 1442,-3161.06 1442,-3161.06"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1444.1,-3161.06 1442,-3155.06 1439.9,-3161.06 1444.1,-3161.06"/>
</g>
<!-- src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge305" class="edge">
<title>src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1382.59,-3140.04C1388.3,-3140.04 1392,-3140.04 1392,-3140.04 1392,-3140.04 1392,-1869.2 1392,-1869.2 1392,-1869.2 1619.85,-1869.2 1619.85,-1869.2"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.85,-1871.3 1625.85,-1869.2 1619.85,-1867.1 1619.85,-1871.3"/>
</g>
<!-- src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs -->
<g id="edge304" class="edge">
<title>src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/validate/matchers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1378,-3134.04C1378,-3129.56 1378,-3125.07 1378,-3125.07 1378,-3125.07 1620.06,-3125.07 1620.06,-3125.07"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1620.06,-3127.18 1626.06,-3125.08 1620.06,-3122.98 1620.06,-3127.18"/>
</g>
<!-- src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/validate/match&#45;module&#45;rule&#45;helpers.mjs -->
<g id="edge303" class="edge">
<title>src/validate/violates&#45;required&#45;rule.mjs&#45;&gt;src/validate/match&#45;module&#45;rule&#45;helpers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1382.72,-3145.96C1382.72,-3145.96 1419.69,-3145.96 1419.69,-3145.96"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1419.69,-3148.06 1425.69,-3145.96 1419.69,-3143.86 1419.69,-3148.06"/>
</g>
<!-- src/validate/match&#45;module&#45;rule&#45;helpers.mjs&#45;&gt;src/utl/regex&#45;util.mjs -->
<g id="edge298" class="edge">
<title>src/validate/match&#45;module&#45;rule&#45;helpers.mjs&#45;&gt;src/utl/regex&#45;util.mjs</title>
<path fill="none" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" d="M1572.69,-3143C1585.58,-3143 1595,-3143 1595,-3143 1595,-3143 1595,-1876.8 1595,-1876.8 1595,-1876.8 1619.91,-1876.8 1619.91,-1876.8"/>
<polygon fill="#aaaaaa" fill-opacity="0.466667" stroke="#aaaaaa" stroke-width="2" stroke-opacity="0.466667" points="1619.91,-1878.9 1625.91,-1876.8 1619.91,-1874.7 1619.91,-1878.9"/>
</g>
<!-- src/validate/match&#45;module&#45;rule&#45;helpers.mjs&#45;&gt;src/validate/matchers.mjs -->
<g id="edge297" class="edge">
<title>src/validate/match&#45;module&#45;rule&#45;helpers.mjs&#45;&gt;src/validate/matchers.mjs</title>
<path fill="none" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" d="M1566,-3133.93C1566,-3130.9 1566,-3128.28 1566,-3128.28 1566,-3128.28 1620.19,-3128.28 1620.19,-3128.28"/>
<polygon fill="#0000ff" fill-opacity="0.466667" stroke="#0000ff" stroke-width="2" stroke-opacity="0.466667" points="1620.19,-3130.38 1626.19,-3128.28 1620.19,-3126.18 1620.19,-3130.38"/>
</g>
</g>
</svg>
    <script>
      var gMode = new Mode();

var title2ElementMap = (function makeElementMap() {
  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  return new Title2ElementMap(edges, nodes);
})();

function getHoverHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function hoverHighlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (
      currentHighlightedTitle !== closestTitleText &&
      gMode.get() === gMode.HOVER
    ) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

function getSelectHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function selectHighlightHandler(pMouseEvent) {
    pMouseEvent.preventDefault();

    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (closestNodeOrEdge) {
      gMode.setToSelect();
    } else {
      gMode.setToHover();
    }
    if (currentHighlightedTitle !== closestTitleText) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}
function Mode() {
  var HOVER = 1;
  var SELECT = 2;

  function setToHover() {
    this._mode = HOVER;
  }
  function setToSelect() {
    this._mode = SELECT;
  }

  /**
   * @returns {number}
   */
  function get() {
    return this._mode || HOVER;
  }

  return {
    HOVER: HOVER,
    SELECT: SELECT,
    setToHover: setToHover,
    setToSelect: setToSelect,
    get: get,
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

function resetNodesAndEdges() {
  nodeListToArray(document.querySelectorAll(".current")).forEach(
    removeHighlight,
  );
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}

var gHints = {
  HIDDEN: 1,
  SHOWN: 2,
  state: 1, // === HIDDEN
  show: function () {
    document.getElementById("hints").removeAttribute("style");
    gHints.state = gHints.SHOWN;
  },
  hide: function () {
    document.getElementById("hints").style = "display:none";
    gHints.state = gHints.HIDDEN;
  },
  toggle: function () {
    if ((gHints.state || gHints.HIDDEN) === gHints.HIDDEN) {
      gHints.show();
    } else {
      gHints.hide();
    }
  },
};

/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
  if (pKeyboardEvent.key === "Escape") {
    resetNodesAndEdges();
    gMode.setToHover();
    gHints.hide();
  }
  if (pKeyboardEvent.key === "F1") {
    pKeyboardEvent.preventDefault();
    gHints.toggle();
  }
}

document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);
document.getElementById("close-hints").addEventListener("click", gHints.hide);
document.getElementById("button_help").addEventListener("click", gHints.toggle);
document.querySelector("svg").insertAdjacentHTML(
  "afterbegin",
  `<linearGradient id="edgeGradient">
      <stop offset="0%" stop-color="fuchsia"/>
      <stop offset="100%" stop-color="purple"/>
   </linearGradient>
  `,
);

// Add a small increment to the last value of the path to make gradients on
// horizontal paths work. Without them all browsers I tested with (firefox,
// chrome) do not render the gradient, but instead make the line transparent
// (or the color of the background, I haven't looked into it that deeply,
// but for the hack it doesn't matter which).
function skewLineABit(lDrawingInstructions) {
  var lLastValue = lDrawingInstructions.match(/(\d+\.?\d*)$/)[0];
  // Smaller values than .001 _should_ work as well, but don't in all
  // cases. Even this value is so small that it is not visible to the
  // human eye (tested with the two I have at my disposal).
  var lIncrement = 0.001;
  var lNewLastValue = parseFloat(lLastValue) + lIncrement;

  return lDrawingInstructions.replace(lLastValue, lNewLastValue);
}

nodeListToArray(document.querySelectorAll("path"))
  .filter(function (pElement) {
    return pElement.parentElement.classList.contains("edge");
  })
  .forEach(function (pElement) {
    pElement.attributes.d.value = skewLineABit(pElement.attributes.d.value);
  });

    </script>
  </body>
</html>
